首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在所有Java类中使用RabbitTemplate

如何在所有Java类中使用RabbitTemplate
EN

Stack Overflow用户
提问于 2018-06-30 04:49:40
回答 2查看 581关注 0票数 1

我将我的代码编辑到这个配置中:

代码语言:javascript
复制
@SpringBootApplication
public class EndPoint {


String QUEUE_PROCESSING_TRANSACTION = "processing-process-queue";
String QUEUE_DATABASE_TRANSACTION = "database-transa-queue";
......

@Bean
public Queue queueProcessingTransaction() {
    return new Queue(QUEUE_PROCESSING_TRANSACTION, true);
}

@Bean
public Queue queueDatabaseEventLogs() {
    return new Queue(QUEUE_DATABASE_EVENT_LOGS, true);
}

@Bean
public Binding bindingQueueProcessingTransaction() {
   return BindingBuilder.bind(new Queu........
}

@Bean
public CachingConnectionFactory connectionFactory() {
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory(HOST);
    return connectionFactory;
}

@Bean
public AmqpAdmin amqpAdmin(CachingConnectionFactory connectionFactory) {
RabbitAdmin admin = new RabbitAdmin(connectionFactory);
.........
admin.declareQueue(new Queue(QUEUE_PROCESSING_TRANSACTION, true));
return admin;
}

@Bean
public RabbitTemplate processingTemplate(CachingConnectionFactory connectionFactory) {
RabbitTemplate processingTemplate = new RabbitTemplate(connectionFactory);
processingTemplate.setExchange(EXCHANGE_PROCESSING);
.......
return processingTemplate;
}

之前,我将这个配置用到了Java class中,为了访问RabbitTemplate,我在第二个Java类中进行了扩展。如何在Java类中使用RabbitTemplate?可能已经有用Spring设计的实现工具了吧?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-30 04:58:37

您只需添加另一个从连接工厂开始创建模板的bean:

代码语言:javascript
复制
@Bean
public RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory) {
   RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
   return rabbitTemplate;
}

您可以在容器托管类中自动部署它:

代码语言:javascript
复制
@Autowired private RabbitTemplate rabbitTemplate;
票数 2
EN

Stack Overflow用户

发布于 2018-06-30 05:02:19

您可以将RabbitTemplate bean注入到另一个Spring Bean中并使用它,例如,您可以创建一个新的Spring Bean (组件),如下所示:

代码语言:javascript
复制
@Component
public class MyComponent {

  @Autowired
  private RabbitTemplate template;

  public void testRabbitTemplate() {
    System.out.println(template);
  }
}

请记住,只有当您从Spring上下文中检索MyComponent时,注入才有效(即,您不能使用new关键字对其进行实例化)。

您还可以在EndPoint类中注入相同的RabbitTemplate,只需将以下行添加到类主体中:

代码语言:javascript
复制
@Autowired private RabbitTemplate template;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51109221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档