gpt4 book ai didi

Spring:如何做透明的运行时可变属性配置

转载 作者:行者123 更新时间:2023-12-04 15:14:24 24 4
gpt4 key购买 nike

Spring 有很好的机制 PropertyPlaceholderConfigurer用于将超时、JDBC Urls 等值注入(inject) Spring bean 以进行配置。是否有一种明智的方法来处理可以在运行时更改的配置值?

更新:在 Spring 3.1 中,有一个不错的方法可以通过 PropertySource 包含非静态配置源,例如数据库。 s。一些 ApplicationContexts 提供了一种刷新机制,该机制原则上能够处理更改的配置值。但是,它首先停止应用程序,然后创建所有新鲜的 bean,然后再次启动应用程序上下文。但是,出于我们的目的,我需要一种透明的方法,以便服务器正确处理当前正在运行的请求。

这样做的另一个想法是在配置更改时创建新对象的自定义 Scope。不幸的是,提供给 Scope 的 ObjectFactory 使用了预处理的 bean 定义,因此不会从配置中重新读取占位符。因此,创建的对象具有相同的配置。 :-(

最佳答案

不幸的是 properties 的配置文件是静态的,并且在启动时发生。我通常做的是通过 公开动态属性。 :

@ManagedResource
@Service
public class BusinessService {

@ManagedAttribute
private int age;

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public void businessMethod() {
//use age...
}

}

记得添加:
<context:mbean-export/>

到你的配置。现在您可以通过 jconsole 访问和更改该属性。或任何其他 JMX 客户端。另见: 23.3.2 Using Source-Level Metadata (JDK 5.0 annotations) .

关于Spring:如何做透明的运行时可变属性配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974246/

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