1. 使用 @Value 注解
@Value 注解可直接将配置文件里的属性值注入到变量中,适合获取单个配置项。
示例代码
假设 application.yml 文件内容如下:
app:name: MySpringBootAppversion: 1.0.0
在 Java 代码中使用 @Value 注解获取配置:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class AppConfig {@Value("${app.name}")private String appName;@Value("${app.version}")private String appVersion;public String getAppName() {return appName;}public String getAppVersion() {return appVersion;}
}
在上述代码中,@Value 注解借助 ${} 占位符获取 application.yml 文件里的配置值。
2. 使用 @ConfigurationProperties 注解
@ConfigurationProperties 注解可将配置文件里的一组属性绑定到一个 Java Bean 上,适合获取多个相关配置项。
示例代码
假设 application.yml 文件内容如下:
app:name: MySpringBootAppversion: 1.0.0author: John Doe
创建一个 Java Bean 来绑定这些配置:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {private String name;private String version;private String author;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}
}
@ConfigurationProperties 注解的 prefix 属性指定了配置项的前缀,Spring Boot 会自动将以 app 为前缀的配置项绑定到 AppProperties 类的对应属性上。
3. 使用 Environment 对象
Environment 对象能让你在代码里访问配置文件中的属性,可动态获取配置。
示例代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;@Component
public class AppConfigWithEnvironment {@Autowiredprivate Environment environment;public String getAppName() {return environment.getProperty("app.name");}public String getAppVersion() {return environment.getProperty("app.version");}
}
通过 Environment 对象的 getProperty 方法获取配置文件里的属性值。
总结
@Value注解:适合获取单个配置项,使用简单。@ConfigurationProperties注解:适合获取一组相关配置项,能自动绑定到 Java Bean 上。Environment对象:可动态获取配置,适合在运行时根据条件获取不同的配置。
