Spring 定义要自动扫描的 bean
Spring define bean to auto-scan
我有一个 @Component
-注释 class,它有几个自动连接的依赖项。我不想自动扫描那个包,因为它有很多我不想初始化的其他 classes。
我可以将这些作为 @Bean
添加到 @Configuration
,但是我不想失去自动连接的能力,而且我实际上并没有在所有地方更改配置他们被配置。换句话说,我不想手动列出上述组件的所有依赖项。
我知道我可以使用过滤器进行组件扫描,但是当有很多 class 不同包中的组件需要以上述方式挑选时,这些很麻烦。
有没有办法告诉 Spring 添加和自动连接特定的 class?
正如您在 JavaDoc 中看到的那样,@ComponentScan
注释有几种不同的方法可以注册组件。如果您不想使用过滤器,最简单的方法可能是有选择地添加 类 和要扫描的子包,而不是应用程序的顶层。例如:
@Configuration
@ComponentScan(
basePackages = { "me.myorg.myapp.services", "me.myorg.myapp.web" },
basePackageClasses = { me.myorg.myapp.config.MyDbConfig.class })
public class MyAppConfig { ... }
还值得指出的是,您可以创建很多public静态配置子类。这些将被组件扫描忽略,但可以正常导入到其他配置 类。这在上述情况下很有用,如果您只想扫描每个包,然后有选择地扫描或导入 sub类:
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 { ... }
我有一个 @Component
-注释 class,它有几个自动连接的依赖项。我不想自动扫描那个包,因为它有很多我不想初始化的其他 classes。
我可以将这些作为 @Bean
添加到 @Configuration
,但是我不想失去自动连接的能力,而且我实际上并没有在所有地方更改配置他们被配置。换句话说,我不想手动列出上述组件的所有依赖项。
我知道我可以使用过滤器进行组件扫描,但是当有很多 class 不同包中的组件需要以上述方式挑选时,这些很麻烦。
有没有办法告诉 Spring 添加和自动连接特定的 class?
正如您在 JavaDoc 中看到的那样,@ComponentScan
注释有几种不同的方法可以注册组件。如果您不想使用过滤器,最简单的方法可能是有选择地添加 类 和要扫描的子包,而不是应用程序的顶层。例如:
@Configuration
@ComponentScan(
basePackages = { "me.myorg.myapp.services", "me.myorg.myapp.web" },
basePackageClasses = { me.myorg.myapp.config.MyDbConfig.class })
public class MyAppConfig { ... }
还值得指出的是,您可以创建很多public静态配置子类。这些将被组件扫描忽略,但可以正常导入到其他配置 类。这在上述情况下很有用,如果您只想扫描每个包,然后有选择地扫描或导入 sub类:
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 { ... }