Spring Boot如何动态发布多个Bean

平西王 发布于 2016/04/15 17:04
阅读 3K+
收藏 0

spring boot版本 1.3.3.RELEASE

@Configuration
@AutoConfigureAfter(SchedulerFactoryBean.class)
public class Config
{
	@Bean
	public Runnable createRunnable(SchedulerFactoryBean[] beans)
	{
		return null;
	}
}

这代码意思是,当有SchedulerFactoryBean类的bean发布之后,就会触发createRunnable方法的执行

这个方法发布了一个Runnable的Bean,但是,他只能发布一个bean

请问,如何这样一次性发布多个Bean

也就是说,我想达到的效果是:SchedulerFactoryBean[] beans这个参数有多少个,就发布多少个

Runnable的Bean

加载中
0
八面山人
八面山人

你可以写2个方法,一个用来循环SchedulerFactoryBean[] beans参数,另一个则新建Runnable的bean。

@Configuration
@AutoConfigureAfter(SchedulerFactoryBean.class)
public class Config {

    public void createRunnable(SchedulerFactoryBean[] beans) {
        for (SchedulerFactoryBean beanObject : beans) {
            //创建Runnable的Bean
            create(beanObject);
        }
    }

    public Runnable create(SchedulerFactoryBean beanObject){
        //TODO 创建方法

    }

}

这哥们说了spring怎么创建动态bean

http://www.oschina.net/code/snippet_1387007_48362

不过,我感觉你应该是想做一个异步的定时调用吧。spring-boot本身支持异步调用。不用这么麻烦。

@Configuration
//启用异步
@EnableAsync
public class Config {

    //异步方法
    @Async
    public void asyncMethod() {
        //..............
    }

}




平西王
平西王
回复 @heikehuan : 是不是异步的,我不关心。我只关心能不能对每个任务进行停止,启动等分别管理,请问,怎么做
八面山人
八面山人
回复 @弟大勿勃_ : 就用@Async注解吧,这个就是异步的,每次新建一个线程,都放map里。后期取也方便。 Map map = new HashMap(); map.put(创建一个uuid, 线程对象);
平西王
平西王
public Runnable create(SchedulerFactoryBean beanObject){ //TODO 创建方法 } 这个只是创建了bean,但是没有发布到spring容器里面去
平西王
平西王
我的确是想做定时调度。但是,我想做的是,每个定时调度都可以分别的启动,停止,请问,怎么做
返回顶部
顶部