java - 当Spring Boot注释的类位于库中时,如何正确加载它们?

标签 java spring spring-boot maven

我有一个正在运行的 Spring Boot 应用程序,其中包含一个如下所示的类:

@RestController
@Validated
@RequestMapping("/HelloWorld")
public class HelloWorldController
{
    private static int foo = getFoo ();

    private static int getFoo ()
    {
        System.out.println ("HelloWorldController getFoo");
        return 0;
    }

    public HelloWorldController ()
    {
        System.out.println ("HelloWorldController Constructor");
    }

    @GetMapping("/get")
    public HelloWorld root ()
    {
        return new HelloWorld ("Hello, world!");
    }
}

/get 请求按预期提供。当应用程序启动时,我可以看到两个 println 输出。

在一个单独的项目中,我有一个类似的类:

@RestController
@Validated
@RequestMapping("/api")
public class ModularAPIDemoController
{
    private static int foo = getFoo ();

    private static int getFoo ()
    {
        System.out.println ("ModularAPIDemoController getFoo");
        return 0;
    }

    public ModularAPIDemoController ()
    {
        System.out.println ("ModularAPIDemoController Constructor");
    }

    @GetMapping("/get")
    public Message root ()
    {
        return new Message ();
    }
}

第二个类是使用 maven 在 mylib 库中构建的,应用程序 pom.xml 将其包含在

<dependency>...<artifactId>mylib</artifactId>...</dependency>

application.jar构建时,我可以在BOOT-INF/lib中看到mylib.jar,但是当服务启动时,我看到来自 HelloWorldControllerprintln,但不是来自 ModularAPIDemoControllerprintln,并且 /api/get 请求不起作用。

我想要一个java库,其中包括@RequestMapping注释类以及其他Spring注释,例如@Configuration@EnableWebSecurity以及各种其他事情。

库和应用程序正在使用 Maven 构建。我如何设置它以便 Spring 加载库依赖项内带注释的类?

最佳答案

显式添加您正在扫描此组件的包。将注释 @ComponentScan 与注释 @SpringBootApplication 一起使用,这样您就可以覆盖默认行为并添加两个包根,如下所示:

@ComponentScan(basePackages = {"package1", "package2"})

关于java - 当Spring Boot注释的类位于库中时,如何正确加载它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61454078/

相关文章:

java - Thymeleaf 中的 View 和重定向有什么区别?

java - 如何在 angularjs 中使用 $resource 来使用 Spring Restful Web 服务

java - 用于安全 LDAP 身份验证绕过的 BlindSSLFactory 在生产环境中不起作用

spring-boot - Spring 启动,线程 "main"中的异常 java.lang.NoClassDefFoundError : org/SpringFramework/boot/SpringApplication

java - 如何在poi-3.2中设置自动过滤器

java - JPA:向多对多添加新条目需要很长时间

java - 向 JDialog 添加按钮?

java - 如何验证 pojo 集合

使用 JWT 的 Spring Security 总是返回 401 未经授权

java - 调用 `jakarta.validation.Validation#buildDefaultValidatorFactory` 时出错