SoFunction
Updated on 2025-04-04

Detailed steps to configure Spring Native in SpringBoot

1. Prerequisites

Make sure your project is using Spring Boot 2.5 or later and is using Java 11 or later.

2. Add dependencies

In yourIn the file, add Spring Native's dependencies and build plugins:

<dependencies>
    <!-- Spring Native Starter -->
    <dependency>
        <groupId></groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId></groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId></groupId>
        <artifactId>spring-boot-starter-native</artifactId>
        <version>0.11.0</version> <!-- Use the latest version -->
        <exclusions>
            <exclusion>
                <groupId></groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId></groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${}</version>
            <configuration>
                <image>
                    <name>${}:${}</name>
                </image>
            </configuration>
        </plugin>
        <plugin>
            <groupId></groupId>
            <artifactId>spring-boot-native-maven-plugin</artifactId>
            <version>0.11.0</version> <!-- Use the latest version -->
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3. Configure Spring Native

1. Configuration

existsrc/main/resources/In  , add Spring Native related configuration:

=build
-args=--no-fallback
  • : Specified as build mode.
  • --no-fallback: Indicates that the fallback function is not used to ensure that the generated image is native.

2. Set up GraalVM

Make sure you have GraalVM installed and add it to your system path. You can check it by:

gu install native-image

3. Add reflection configuration

For some classes that require reflection, a reflection configuration must be provided. Create aFile, define the class that needs to be reflected:

[
    {
        "name": "",
        "allDeclaredConstructors": true,
        "allDeclaredMethods": true,
        "allDeclaredFields": true
    }
]

Put this file insrc/main/resources/META-INF/native-image/In the directory.

4. Build native mirrors

Build a native image using the following command:

mvn clean package -Pnative

This will generate an executable native image located attarget/In the directory.

4. Run native mirror

After the build is complete, you can run the generated native image:

./target/myapp

5. Other tips for optimizing startup time

  • Using facet programming: Use AOP only where necessary to reduce unnecessary proxying and interception.
  • Minimize resource loading at startup: Avoid loading large datasets at startup.
  • Lazy loading: Make sure that the bean is loaded only when needed, and can be set-initialization=trueTurn on lazy loading.

6. Summary

Through the above steps, Spring Native can be effectively configured to reduce the startup time of Spring Boot applications. Native images built with GraalVM can significantly increase startup speed and reduce memory footprint. Depending on the specific requirements of the project, configuration and reflection settings may need to be adjusted to ensure that all functions work properly.

This is the end of this article about the detailed steps of SpringBoot configuring Spring Native. For more related content on SpringBoot configuring Spring Native, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!