springboot修改properties的值

在 Spring Boot 中,我们可以通过修改 application.properties application.yml 文件来配置应用程序的行为。这些属性可以通过在 application.properties application.yml 中指定值来设置,也可以通过在 Spring 环境中以编程方式动态更改。

如果您需要在运行时动态修改属性值,可以使用 Spring 的 Environment 对象来完成。下面是一个示例,展示了如何使用 Environment 来修改属性值:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@Configuration
@ConfigurationProperties(prefix = "my.property")
public class MyConfig {
    private String myProperty;
    @Autowired
    private Environment environment;
    public String getMyProperty() {
        return myProperty;
    public void setMyProperty(String myProperty) {
        this.myProperty = myProperty;
        environment.getPropertySources().addFirst(new MyPropertySource("my.property", myProperty));
    private class MyPropertySource extends PropertySource<String> {
        private String myProperty;
        public MyPropertySource(String name, String myProperty) {
            super(name);
            this.myProperty = myProperty;
        @Override
        public String getProperty(String key) {
            if ("my.property".equals(key)) {
                return myProperty;
            return null;

在上面的示例中,我们使用了 @ConfigurationProperties 注解将属性 my.property 注入到 MyConfig 类中。然后,我们使用 Environment 对象将属性值动态添加到属性源中。

MyPropertySource 类继承了 Spring 的 PropertySource 类,并覆盖了 getProperty 方法以返回指定的属性值。然后,我们将 MyPropertySource 对象添加到 Environment 的属性源列表中。

接下来,您可以在您的应用程序中使用 @Value 注解注入您的属性值,就像这样:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
    @Value("${my.property}")
    private String myProperty;
    @GetMapping("/my-property")
    public String getMyProperty() {
        return myProperty;

上述示例代码展示了如何使用 @Value 注解从 Environment 中获取动态属性值。当您调用 GET /my-property 时,您将看到在运行时修改的属性值。

希望这些信息能够帮助到您。如果您还有其他问题,请继续提问。

  •