1

我遇到了 Spring-native 的问题,它没有从依赖项中加载我的 RestControllers(很可能是服务)。我的项目设置如下所示:我有一堆独立的 Spring Boot 应用程序,并将它们组合在一起,形成一个这样的多合一运行器。

@SpringBootApplication
@NativeHint(options = { "--enable-all-security-services" }, resources = {
    @ResourceHint(patterns = "eu/neclab/ngsildbroker/*/controller/*.java"),
    @ResourceHint(patterns = "org/flywaydb/core/internal/version.txt") }, types = {
            @TypeHint(types = { EntityController.class }) })
public class Runner {

public static void main(String[] args) throws Exception {
    SpringApplication.run(new Class[] { RegistryHandler.class, HistoryHandler.class, 
    QueryHandler.class,
            SubscriptionHandler.class, EntityHandler.class }, args);
}

}

https://github.com/ScorpioBroker/ScorpioBroker/blob/ldlibchange/AllInOneRunner/src/main/java/eu/neclab/ngsildbroker/runner/Runner.java

从 Java 中这一切正常,我的依赖项中的 Spring 应用程序正在正确加载并提供定义的 RestControllers。

现在我开始玩 Spring-native 并且现在可以全部编译它并且它还包含依赖项(当没有在 maven 中安装正确的类时,我得到了一个在构建时找不到的类)我的原生 pom 看起来像这样(更多或更少从教程中复制粘贴)

<profile>
        <id>native</id>
        <activation>
            <property>
                <name>native</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.experimental</groupId>
                    <artifactId>spring-aot-maven-plugin</artifactId>
                    <version>0.11.0</version>
                    <executions>
                        <execution>
                            <id>generate</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <image>
                            <builder>paketobuildpacks/builder:tiny</builder>
                            <env>
                                <BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE>
                            </env>
                            <name>scorpiobroker/aaio</name>
                        </image>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

...但是没有一个restcontrollers被加载我总是得到404。我尝试了NativeHints的各种变体,但我无法让它加载RestControllers。有谁知道我如何告诉 Spring-Native 加载我的 RestControllers?我认为通过 SpringApplication.run 加载它应该加载所有模块,但似乎 Spring-Native 不能那样处理它。任何提示或帮助将不胜感激。

4

0 回答 0