【问题标题】:Spring boot - import jar but not all its beansSpring boot - 导入 jar 但不是所有的 bean
【发布时间】:2018-12-25 07:31:40
【问题描述】:

您好,我有一个“通用”项目,其中包含我使用的各种队列的所有实现。

由于遗留问题,我在流程中使用了 2 个队列。

它有卡夫卡和兔子。

我的项目定义了 2 个 bean 和子 bean:

  • KafkaProducer
  • KafkaConsumer
  • 兔子队列

所有都包含一些子bean来处理故障和东西。

现在这是我的问题: 我有一个不使用 Kafka 的微服务。我只想定义 Rabbit 队列及其 bean,但是一旦我导入这个公共 jar 依赖项,它就会自动启动 Kafka bean。

如何在 spring 中做到这一点而不分离到不同的库。

例如:

@Componenet
public class KafkaProducer {

   @Inject
   private KafkaFailureHandler failureHandler;

}

问候, 伊多

【问题讨论】:

  • 你能在componentscan中排除它们吗?
  • 我的回答有帮助吗?

标签: spring spring-boot


【解决方案1】:

在类中添加@Lazy注解

如果存在并设置为 true,@Bean 或 @Component 将不会被初始化,直到被另一个 bean 引用或从封闭的 BeanFactory 显式检索。

关于lazy @Inject,试试在Instance<>里面加:

@Inject
Instance<KafkaFailureHandler> failureHandler;

Provider

@Inject
Provider<KafkaFailureHandler> failureHandler;

对于组件/资源的按需注入,将它们作为 Provider 注入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2019-03-26
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    相关资源
    最近更新 更多