正如您从
JavaDoc
这个
@ComponentScan
注释有几种不同的方式可以注册组件。如果不想使用过滤器,最简单的方法可能是有选择地添加要扫描的类和子包,而不是添加应用程序的顶层。例如:
@Configuration
@ComponentScan(
basePackages = { "me.myorg.myapp.services", "me.myorg.myapp.web" },
basePackageClasses = { me.myorg.myapp.config.MyDbConfig.class })
public class MyAppConfig { ... }
还值得指出的是,您可以创建许多公共静态配置子类。这些将被组件扫描忽略,但可以正常导入到其他配置类中。如果您只想扫描每个包,然后选择性地扫描或导入子类,那么这在上述场景中非常有用:
public class BaseConfig {
@Configuration
public static class DbConfigA {...}
@Configuration
public static class DbConfigB {...}
}
@Configuration
@ComponentScan(
basePackages = { "me.myorg.myapp" },
basePackageClasses = { DbConfigA.class })
public class MyAppConfig { ... }