在Spring的运行时动态声明bean
我想知道以下情况是否可能。出于测试目的,我希望在应用程序上下文中为不同的测试声明不同的模拟类。这些是使用Jersey REST客户端的验收测试。有没有办法在运行时动态声明bean?Spring是否有API允许在加载上下文后更改应用程序上下文?
回答:
关于第一个问题,你可以在运行时通过BeanDefinitionRegistry.registerBeanDefinition()方法声明Bean ,例如:
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(SomeClass.class); builder.addPropertyReference("propertyName", "someBean"); // add dependency to other bean
builder.addPropertyValue("propertyName", someValue); // set property value
DefaultListableBeanFactory factory = (DefaultListableBeanFactory) context.getBeanFactory();
factory.registerBeanDefinition("beanName", builder.getBeanDefinition());
也可以使用以下方式注册单例bean实例(已配置):
context.getBeanFactory().registerSingleton(beanName, singletonObject)
以上是 在Spring的运行时动态声明bean 的全部内容, 来源链接: utcz.com/qa/421710.html