ComponentScan 和 Autowired 不适用于相关的 Spring 项目?
ComponentScan and Autowired not working for dependent Spring project?
我有两个项目 A 和 B。它们都是用 Maven 构建的,并且项目 A 对项目 B 有 Maven 依赖性。这两个项目都有一个 class 带有我定义 @Beans 的 @Configuration 注释。
我在两个项目的项目 A 中都有 bean。如果我在同一项目中定义的 bean 的项目 A 中使用 @Autowired 批注,则自动装配有效。但是,如果我在项目 B 的 bean 的项目 A 中使用 @Autowired 注释,我将得到一个异常。
这是什么意思?如何在项目 A 中自动装配项目 B 中定义的 bean?
这通常是 ComponentScan 上 class 基本路径的问题。
例如,如果您有以下基础包
com.myproject.a
和
com.myproject.b
分别在您的项目 A 和 B 中,并且您正在将 SpringBoot 与主要 class
package com.myproject.a
@Configuration
@EnableAutoConfiguration
@ComponentScan
class MyApp {
// Some public static void main ...
}
它只会在包 com.myproject.a 中找到您的 classes 并且它是 children。
要解决此问题,您必须以扫描两个包结构的方式增强@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 ...
}
我有两个项目 A 和 B。它们都是用 Maven 构建的,并且项目 A 对项目 B 有 Maven 依赖性。这两个项目都有一个 class 带有我定义 @Beans 的 @Configuration 注释。
我在两个项目的项目 A 中都有 bean。如果我在同一项目中定义的 bean 的项目 A 中使用 @Autowired 批注,则自动装配有效。但是,如果我在项目 B 的 bean 的项目 A 中使用 @Autowired 注释,我将得到一个异常。
这是什么意思?如何在项目 A 中自动装配项目 B 中定义的 bean?
这通常是 ComponentScan 上 class 基本路径的问题。
例如,如果您有以下基础包
com.myproject.a
和
com.myproject.b
分别在您的项目 A 和 B 中,并且您正在将 SpringBoot 与主要 class
package com.myproject.a
@Configuration
@EnableAutoConfiguration
@ComponentScan
class MyApp {
// Some public static void main ...
}
它只会在包 com.myproject.a 中找到您的 classes 并且它是 children。
要解决此问题,您必须以扫描两个包结构的方式增强@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 ...
}