为什么一切都必须是Spring @Bean?

时间:2015-01-23 16:12:58

标签: java spring rabbitmq spring-bean

我不认为这是一个spring-amqp特定的问题,但它提供了一个相对整洁的例子来激发我的问题。从spring-rabbit Hello World project

中考虑这个@Configuration
@Configuration
public class HelloWorldConfiguration {
    …

    @Bean /* <-- Optional?! What's the point? */
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("localhost");
        return connectionFactory;
    }

    @Bean
    public AmqpAdmin amqpAdmin() {
        return new RabbitAdmin(connectionFactory());
    }

    @Bean
    public RabbitTemplate rabbitTemplate() {
        RabbitTemplate template = new RabbitTemplate(connectionFactory());
        …
    }

    @Bean
    // Every queue is bound to the default direct exchange
    public Queue helloWorldQueue() {...}
}

我可以很容易地想到为什么AmqpAdmin函数会产生一个bean,因此Queue对象似乎是完全合理的。但在我看来,rabbitTemplateconnectionFactory可能是常规的非bean函数。甚至是静态功能,非常简单的动物。

添加这些功能的@Bean注释是什么?它有哪些依赖注入模式?


以下答案无处不在。这些假设我知道我想要一个bean,并处理它为什么我没有得到它。我的问题在这里是不同的:为什么我需要这些东西成为一个豆?未修饰的功能不等同吗?

Spring, working with @Configuration and @Bean annotations

0 个答案:

没有答案