gpt4 book ai didi

spring - 在 Spring 中在运行时动态声明 bean

转载 作者:IT老高 更新时间:2023-10-28 13:52:01 25 4
gpt4 key购买 nike

我想知道以下是否可能。出于测试目的,我希望在应用程序上下文中为不同的测试声明不同的模拟类。这些是验收测试,使用 Jersey REST 客户端。有没有办法在运行时动态声明一个bean? Spring 是否有 API 允许在加载上下文后更改应用程序上下文?

最佳答案

在应用程序上下文中拥有不同 bean 的常用方法是使用配置文件。您可以在以下 spring 源帖子中阅读有关配置文件的信息:

关于你的第一个问题,你可以通过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 的明确方法,但最常见的方法是:

关于spring - 在 Spring 中在运行时动态声明 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com