java - 如何从加载中排除bean?

标签 java spring spring-mvc

我在将外部库与 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/

相关文章:

java - Spring MVC : manage Exceptions

java - 如何解决循环依赖?

java - Eclipse中这些不同的执行环境是什么意思呢?

java - 包含链接文本的下拉列表中的 getText() 返回空字符串

java - SLF4J 按标记过滤日志消息

spring - 在 Impala 和 OSGi 之间进行选择

java - 将现有的 Spring 应用程序转换为 Spring-Boot

java - 将长时间运行的 SQL 查询拆分为多个较小的查询

Java CompareTo 没有返回好的结果

Spring-boot JPA连接到运行时提供数据库和模式的postgres