如何更改弹簧环境中的属性?

use*_*545 6 java spring

我在我的应用程序中使用spring Environment Bean来获取应用程序配置属性.我想从java代码更改spring环境中的属性值,而无需重新启动应用程序服务器.我怎样才能做到这一点?

@Service
public void MyService {
    @Autowired
    private Environment environment;

    public void doSomething(){
        String value = environment.getProperty("myproperty");
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*ong 5

Environment默认情况下,您将在Spring上下文中获得的实现实际上是StandardEnvironment的一个实例.

StandardEnvironment实现ConfigurableEnvironment,因此如果您注入ConfigurableEnvironment而不是超级接口,您将能够在运行时进行更改.

@Service
public void MyService {
    @Autowired private ConfigurableEnvironment environment;
Run Code Online (Sandbox Code Playgroud)

  • 请参阅此代码以添加属性:/sf/answers/3055798651/ (3认同)
  • 我的环境变量是从yml填充的。这种方法还会写入yml文件还是仅写入变量? (2认同)
  • 您应该添加代码来实际添加/更改属性。我认为该文档不太清楚。 (2认同)