У меня есть работающее приложение 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 ();
}
}
Второй класс встроен в библиотеку mylib
с использованием maven и приложение pom.xml
включает его с
<dependency>...<artifactId>mylib</artifactId>...</dependency>
Когда строится application.jar
, я вижу mylib.jar
в BOOT-INF/lib
, однако, когда служба запускается, я вижу println
с HelloWorldController
но не из ModularAPIDemoController
, и запрос /api/get
не работает.
Мне нужна библиотека java, которая включает в себя @RequestMapping
аннотированные классы, а также другие аннотации Spring, такие как @Configuration
и @EnableWebSecurity
и многое другое.
Библиотеки и приложения создаются с помощью Maven. Как я могу настроить его так, чтобы Spring загружал аннотированные классы, которые находятся в зависимости от библиотеки?