use*_*582 2 spring autowired spring-boot component-scan
我有两个项目 A 和 B。两者都是用 Maven 构建的,项目 A 有一个对项目 B 的 Maven 依赖。这两个项目都有一个带有 @Configuration 注释的类,我在其中定义了 @Beans。
我在项目 A 中有来自两个项目的 bean。如果我在同一项目中定义的 bean 的项目 A 中使用 @Autowired 注释,则自动装配工作。但是,如果我在项目 B 的 bean 的项目 A 中使用 @Autowired 批注,则会出现异常。
这是什么意思?如何在项目 B 中定义的项目 A 中自动装配 bean?
小智 7
这通常是 ComponentScan 上的基类路径的问题。
例如,如果您有以下基本软件包
com.myproject.a
Run Code Online (Sandbox Code Playgroud)
和
com.myproject.b
Run Code Online (Sandbox Code Playgroud)
分别在您的项目 A 和 B 中,并且您在主类中使用 SpringBoot
package com.myproject.a
@Configuration
@EnableAutoConfiguration
@ComponentScan
class MyApp {
// Some public static void main ...
}
Run Code Online (Sandbox Code Playgroud)
它只会在包 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 ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9971 次 |
| 最近记录: |