PROTOTYPE范围如何通过方法调用在SPRING中工作?

时间:2017-10-30 02:07:26

标签: java spring-boot prototype

" listenercontainer(i)"方法调用每次都创建一个新的bean?

OR

这只是常规方法吗?

如果是常规方法调用,那么如何在containers方法中创建新bean呢?

   @Configuration
    public class JMSConfig {
        private int value=5;

        @Bean(initMethod="start",destroyMethod="stop")
        @Scope("prototype")
        public DefaultMessageListenerContainer listenerContainer(int i) {
            DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
            ....//container properties
            return container;
        }

        @Bean
        public Set<DefaultMessageListenerContainer> containers() {
            Set<DefaultMessageListenerContainer> containers = new HashSet<DefaultMessageListenerContainer>();
            for(int i=0;i<value;i++){
                DefaultMessageListenerContainer container = listenerContainer(i);
                containers.add(container);
            }
            return containers;
        }
}

我可以自动装配Springapplication上下文并使用它来创建一个新的bean吗?

我的主要方法代码

SpringApplication app = new SpringApplication(PncPublisherApplication.class);
        app.run(args);

1 个答案:

答案 0 :(得分:0)

Spring(5.0)中的原型范围如下:

  

bean的非单例原型范围部署导致每次发出对该特定bean的请求时都会创建一个新的bean实例。也就是说,将bean注入另一个bean,或者通过对容器的getBean()方法调用来请求它。

Reference