如何解决通过使用component-scan是否可以排除内部静态类bean的创建?
如果不明白,请再问一次.....
启动我的应用程序时,正在加载配置类并根据环境创建Bean。例如,它正在创建两个bean进行开发,并且该类是其他依赖的jar的一部分,我没有直接修改其源代码,但我的应用程序启动完全取决于此类。下面是它为开发配置文件创建的两个bean名称。
- ExistingConfiguration
- ExistingConfiguration.DevelopmentConfiguration
ExistingConfiguration类结构看起来像
@Configuration
class ExistingConfiguration {
@Dev @Configuration
static class DevelopmentConfiguration{
Queue q1;
//Some code goes here for development profile
}
@Production @Configuration
static class ProductionConfiguration{
Queue q2;
//Some code goes here for production profile
}
}
我创建了具有与我的应用程序特定的配置类似的结构的新类,以避免依赖于上述类,并使用component-scan排除了上述Configuration类,因此它将开始使用我的CustomConfiguration类。
@Configuration
@ComponentScan(basePackages = {"com.practice"},excludeFilters = {@Filter(type = FilterType.ASSIGNABLE_TYPE,value = ExistingConfiguration.class),@Filter(value = Configuration.class)})
class CustomConfiguration {
@Dev @Configuration
static class DevelopmentConfiguration{
Queue q1;
//Some code goes here for development profile
}
@Production @Configuration
static class ProductionConfiguration{
Queue q2;
//Some code goes here for production profile
}
}
还修改了 applicationContext.xml 文件,使其指向以前指向ExistingConfiguration的CustomConfiguration类。
启动应用程序时,我收到一个名为 existingConfiguration.DevelopmentConfiguration 的Bean创建错误。我不明白如何在启动应用程序时排除上面的bean,并指向加载 CustomConfiguration / CustomConfiguration.DevelopmentConfiguration bean信息。
在创建了新的配置类之后,我可以看到另外两个bean和上述的旧bean被添加到了BeanDefinitionRegistry中。
- CustomConfiguration
- CustomConfiguration.DevelopmentConfiguration
有人建议如何在春季通过使用component-scan或其他方法来排除创建静态类的bean。删除ExistingConfiguration时我没有收到任何问题,但是删除ExistingConfiguration.DevelopmentConfiguration bean时应用程序没有失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。