在 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
时,您将看到在运行时修改的属性值。
希望这些信息能够帮助到您。如果您还有其他问题,请继续提问。