2

我有两个项目 A 和 B。两个项目都是用 Maven 构建的,项目 A 对项目 B 有 Maven 依赖项。两个项目都有一个带有 @Configuration 注释的类,我在其中定义了 @Beans。

我在项目 A 中有 bean,来自两个项目。如果我在同一项目中定义的 bean 的项目 A 中使用 @Autowired 注释,则自动装配工作。但是,如果我在项目 B 的一个 bean 的项目 A 中使用 @Autowired 注释,我会得到一个异常。

这是什么意思?如何自动装配项目 B 中定义的项目 A 中的 bean?

4

1 回答 1

7

这通常是 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 ... 
}
于 2016-02-09T20:25:48.407 回答