我想知道以下是否可行.出于测试目的,我希望在应用程序上下文中为不同的测试声明不同的模拟类.这些是使用Jersey REST客户端的验收测试.有没有办法在运行时动态声明bean?Spring是否有一个API允许在加载上下文后更改应用程序上下文?
Jos*_*tin 23
在应用程序上下文中使用不同bean的常用方法是使用配置文件.您可以在以下弹簧源帖子中阅读有关配置文件的信息:
关于第一个问题,您可以通过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());
Run Code Online (Sandbox Code Playgroud)
也可以注册一个单例bean实例(已配置)
context.getBeanFactory().registerSingleton(beanName, singletonObject)
Run Code Online (Sandbox Code Playgroud)
最后,Spring在刷新上下文后没有提供更改bean的明确方法,但最常见的方法是:
归档时间: |
|
查看次数: |
34235 次 |
最近记录: |