我在将外部库与 Spring 集成时遇到问题。它包含一个用 @Configuration
注释的类它有一个用 @Bean
注释的方法.我不希望它被实例化(它不是必需的,并且引入了对 Spring Boot 的依赖,我不使用它。
不幸的是这@Configuration
- 带注释的类在库中的其他地方使用(类类型需要,而不是接口(interface)类型,所以我需要准确地实例化这个类)。
我从自动扫描中排除了它的包,我没有直接导入它。只需手动构建它并在自己的配置中注册为 bean。
所以,长话短说 - 我需要注册一个 bean,但将其从注释 scnanning 中排除(不处理它的 @Bean
-annotated 方法)。有什么办法可以做到这一点?
最佳答案
如果您的意思是您的 maven gradle 中有库,那么您可以将 spring bean 排除在初始化之外。我找到了exclude @Component from @ComponentScan
@Configuration
@EnableSpringConfigured
@ComponentScan(
basePackages = {"com.example"},
excludeFilters = {
@ComponentScan.Filter(
type = FilterType.ASSIGNABLE_TYPE,
value = Foo.class)})
public class MySpringConfiguration {
}
如果您不想包含传递依赖项,因此您不希望您的依赖项添加它使用的其他依赖项,则必须将它们从您的依赖项中排除(在 maven、gradle 中)。
关于java - 如何从加载中排除bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38285763/