Контроллер / RestController из библиотеки Spring Gradle - PullRequest
1 голос
/ 03 февраля 2020

Я хочу использовать контроллер из библиотеки Gradle, который я написал, но он не получает Autowired в приложении, где я использую библиотеку.

Он работает, когда я использую @Import(ControllerName.class) в ApplicationClass работающее приложение, но тогда мне придется вручную импортировать каждый отдельный класс из библиотеки

@ComponentScan не работает и из того, что я прочитал, не работает только с @Controller и @RestController с @Bean, @Service и @Component.

Это класс контроллера в библиотеке (я оставил бизнес-логи c)

@Controller
public class FrontendController {


    @GetMapping("/login")
    public String showLoginForm(){
        return "login";
    }

    //some other endpoints
}

И это в настоящее время класс приложения в моем основном приложении:

@SpringBootApplication
@ComponentScan(basePackages = {"com.myapp.demo", "com.myapp.login-lib"})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

1 Ответ

0 голосов
/ 03 февраля 2020

Я нашел свою ошибку. В моей библиотеке мне (очевидно) не нужен класс с publi c stati c void main, но для правильного автоматического переноса материала из моей библиотеки мне нужен класс с @ Configuration.

Поскольку у меня также есть репозитории и сущности, мне также нужно определить их пакеты в библиотеке ->, поэтому я добавил в библиотеку класс, который выглядит следующим образом:

@Configuration
@ComponentScan(basePackages = {"com.myapp.login-lib"})
@EnableJpaRepositories(basePackages = {"com.myapp.login-lib"})
@EntityScan(basePackages = {"com.myapp.login-lib"})
public class BaseConfiguration {
}

Затем в приложении, где я использую библиотеку Мне нужно было только импортировать эту конфигурацию:

import com.myapp.login-lib.BaseConfiguration;

@SpringBootApplication
@Import(BaseConfiguration.class)
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
...