如何使用@ComponentScan 注解扫描多个路径?

2022-01-13 00:00:00 annotations spring java

我正在使用 Spring 3.1 并使用 @Configuration@ComponentScan 属性引导应用程序.

I'm using Spring 3.1 and bootstrapping an application using the @Configuration and @ComponentScan attributes.

真正的开始是用

new AnnotationConfigApplicationContext(MyRootConfigurationClass.class);

这个配置类被注释了

@Configuration
@ComponentScan("com.my.package")
public class MyRootConfigurationClass

这很好用.但是我想更具体地了解我扫描的包,所以我尝试了.

and this works fine. However I'd like to be more specific about the packages I scan so I tried.

@Configuration
@ComponentScan("com.my.package.first,com.my.package.second")
public class MyRootConfigurationClass

但是这失败了,错误提示我找不到使用 @Component 注释指定的组件.

However this fails with errors telling me it can't find components specified using the @Component annotation.

我所追求的正确方法是什么?

What is the correct way to do what I'm after?

谢谢

推荐答案

@ComponentScan 使用字符串数组,像这样:

@ComponentScan uses string array, like this:

@ComponentScan({"com.my.package.first","com.my.package.second"})

当你只在一个字符串中提供多个包名时,Spring会将其解释为一个包名,因此无法找到它.

When you provide multiple package names in only one string, Spring interprets this as one package name, and thus can't find it.

相关文章