使用方法动态创建Spring bean

时间:2017-06-16 13:48:31

标签: spring spring-boot

我必须在Spring Boot中使用公司定制的库,并想知道我是否能够在运行时创建这样的bean并将其添加到Spring应用程序上下文中。

@Bean(name = {"customConnectionFactory"})   
public ConnFactory connector() {
    return new SimpleConnFactory(configuration(), "prefix");
}

所以当我在启动应用程序时允许正常连接bean时,这很好用。现在需求已经改变,我应该能够动态地运行这个。我已经做了一些研究,似乎可以将类添加到spring上下文运行时,但是如何运行返回新对象的方法呢?

1 个答案:

答案 0 :(得分:2)

可能是这样的

DefaultListableBeanFactory beanFactory = //get and store the factory somewhere

MyBean newBean = new MyBean();
beanFactory.initializeBean(newBean,"TheBeanName"); //could be class' canonical name
beanFactory.autowireBeanProperties(newBean, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
beanFactory.registerSingleton("TheBeanName", newBean);