代码之家  ›  专栏  ›  技术社区  ›  levant pied

要自动扫描的Spring定义bean

  •  0
  • levant pied  · 技术社区  · 8 年前

    我有一个 @Component -具有多个自动关联依赖项的注释类。我不想自动扫描那个包,因为它有很多其他类,我不想初始化。

    我可以将这些添加到 @Configuration @Bean

    我知道我可以使用过滤器进行组件扫描,但当以上述方式选择不同包中的许多类时,这些过滤器会很麻烦。

    有没有办法告诉Spring添加并自动连接特定类?

    1 回复  |  直到 8 年前
        1
  •  1
  •   woemler    8 年前

    正如您从 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 { ... }