我有以下情况。JDK 17,Spring-Boot:2.6.2。一个gradle多项目。一个项目是一个库(java-library,没有spring boot插件)。另一个项目是一个带spring boot插件的spring boot应用程序。通常不使用spring依赖管理插件,而是使用gradle平台概念。应用程序项目包含每个“实现(project(':..”)对库项目的依赖。
图书馆:
- 库项目和Sping Boot 应用程序项目有不同的包。
例如:库根包是a.b.c,应用程序根包是a.b.d
- 库项目在包层次结构的根包中有一个配置类(例如a. b.c. LibraryConfig),它用@Configuration annotation注解,并用@ PencentScan annotation注解,它具有指向此配置类的属性“basePackageClass”:
@Configuration
@ComponentScan(basePackageClass = LibraryConfig.class)
public class LibraryConfig {
字符串
- 在库层次结构内部(在包a. b.c. * 中也是如此)是服务和rest控制器。
适用范围:
- 应用程序在包层次结构的根包中(例如在a.b.d中)有应用程序类,在子包“config”中有配置类(例如a.b.d.config.AppConfig),它从库导入配置类:
@Configuration
@Import(a.b.c.LibraryConfig.class)
public class AppConfig {
型
问题:库中的类在运行时存在-我们能够加载它们。库中没有任何组件在上下文中(未注册),既没有服务也没有rest控制器。
我们遗漏了什么?
我们已经尝试了不同的导入和扫描星座。还添加了组件扫描到应用程序类,并设置有特定的软件包。没有帮助。
2条答案
按热度按时间rhfm7lfc1#
问题是,主要应用程序是使用 Spring Boot 索引注解处理器和库-不。所以在启用库注解处理器后,问题就解决了。
avkwfej42#
相同。正如在接受的答案中提到的-第一个模块包含这样的路径部分:
字符串
而且依赖库中没有这样的参数。因此,尽管我的@ martent-class和第一个模块中的@SpringBootApplication在同一个包中,我还是遇到了同样的错误。