Spring Boot组件扫描

时间:2019-06-08 21:02:34

标签: java spring spring-boot

我正在编写一个新的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是我的服务

2 个答案:

答案 0 :(得分:0)

@ComponentScan仅在类上带有诸如@Component@Service之类的spring注释时才有效。如何解决此问题的方法是使用声明性方法,使用@Bean使用@Configuration注释的类将解决此问题。

答案 1 :(得分:0)

问题没有正确的注释。我终于将其修复如下

@Component
public Class UserService {
    @Autowired
    @Lazy
    private CommonUtils commonUtils;
}

我必须使用@Lazy批注来获取第三方库的依赖项。在热切的初始化过程中,spring无法找到依赖项bean。