我有一个@Component
- 带注释的类,它有几个自动连接的依赖项。我不想自动扫描该软件包,因为它有很多其他我不想要初始化的类。
我可以将@Configuration
作为@Bean
添加到SELECT name, tid
FROM table_name
WHERE STATUS = 1 AND
((NAME = 'name1' AND
TID = 'tid1') OR
(NAME = 'name2' AND
TID = 'tid2'))
,但是我不想失去让自动连线的能力,而我实际上并没有在所有地方更改配置他们配置。换句话说,我不想手动列出上述组件的所有依赖项。
我知道我可以使用过滤器进行组件扫描,但是当以上述方式选择不同包中的很多类时,这些都很麻烦。
有没有办法告诉Spring添加和自动连接特定类?
答案 0 :(得分:1)
从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 { ... }