我有一个正在运行的 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
,但是当服务启动时,我看到来自 HelloWorldController
的 println
,但不是来自 ModularAPIDemoController
的 println
,并且 /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/