我有两个项目A和B.两个都是用Maven构建的,而项目A对项目B有一个Maven依赖项。两个项目都有一个带有@Configuration注释的类,我定义了@Beans。
我在项目A中都有来自两个项目的bean。如果我在同一项目中定义的bean的项目A中使用@Autowired注释,则自动装配将起作用。但是,如果我在项目B的bean的项目A中使用@Autowired注释,我将得到一个例外。
这是什么意思?如何在项目A中自动装配bean,这是在项目B中定义的?
答案 0 :(得分:3)
这通常是ComponentScan上基类路径的问题。
例如,如果你有以下基础包
com.myproject.a
和
com.myproject.b
分别在你的项目A和B中,你将SpringBoot与主类一起使用
package com.myproject.a
@Configuration
@EnableAutoConfiguration
@ComponentScan
class MyApp {
// Some public static void main ...
}
它只会在com.myproject.a包中找到你的类及其子类。
要解决此问题,您必须以扫描两个包结构的方式增强@ComponentScan,例如。
package com.myproject.a
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.myproject.a", "com.myproject.b"}
// or basePackages = "com.myproject" in this example
class MyApp {
// Some public static void main ...
}