我正在编写一个新的spring boot项目,我的根软件包名称为“ com.example” 。在我的gradle配置中,我要添加第三方库的依赖项,该库的根包名称为“ org.base” 。现在,该库具有带有@Component批注的类,我想在我的代码中利用@Autowired
在我的Config类中,我也在扫描第三方库的基本包。
@Configuration
@ComponentScan({"org.base", "com.example"})
public class ServiceConfig{...}
当我运行应用程序时,spring无法从该库中查找/创建bean,并且出现了bean not found错误。
要使组件扫描正常工作,根软件包必须相同吗?
错误详细信息:UserService需要找不到类型为'org.base.util.CommonUtils'的bean。
UserService是我的服务
答案 0 :(得分:0)
@ComponentScan
仅在类上带有诸如@Component
或@Service
之类的spring注释时才有效。如何解决此问题的方法是使用声明性方法,使用@Bean
使用@Configuration
注释的类将解决此问题。
答案 1 :(得分:0)
问题没有正确的注释。我终于将其修复如下
@Component
public Class UserService {
@Autowired
@Lazy
private CommonUtils commonUtils;
}
我必须使用@Lazy批注来获取第三方库的依赖项。在热切的初始化过程中,spring无法找到依赖项bean。