使用方法动态创建 Spring bean 运行时



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

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

因此,当我在启动应用程序时被允许正常连接豆子时,这工作正常。现在需求发生了变化,我应该能够动态地执行此操作。我已经做了一些研究,似乎可以将类添加到 spring 上下文运行时,但是返回新对象的运行方法怎么样?

可能是这样的

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);

最新更新