本篇博客主要讲解下在 Spring Boot 中如何获取配置文件的值.
1. 使用 YAML 配置文件
Spring Boot 默认生成的配置文件为 application.properties, 不过它也支持 YAML 语言的配置文件,
两者之间的差别并不是很大, 只是 YAML 语言的配置文件层次结构更明显, 可读性更强, 因此目前使用的更多一些.
我们假设本来 application.properties 的配置为:
spring.main.banner-mode=off
那么如何将配置文件切换为 application.YAML 呢?
首先删除掉原来的配置文件 application.properties, 新增配置文件 application.YAML, 新增方式如下:
然后修改 application.YAML 为:
- spring:
- main:
- banner-mode: "off"
运行结果和原来使用 properties 配置文件时一致.
2. 使用 @Value 注解获取配置文件值
首先在 application.YAML 中添加如下配置:
- book:
- author: wangyunfei
- name: spring boot
然后修改启动类的代码为:
- package com.zwwhnly.springbootaction;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.Web.bind.annotation.RestController;
- @RestController
- @SpringBootApplication
- public class SpringbootActionApplication {
- @Value("${book.name}")
- private String bookName;
- @Value("${book.author}")
- private String bookAuthor;
- @RequestMapping("/")
- public String index() {
- return "book name is:" + bookName + "and book author is:" + bookAuthor;
- }
- public static void main(String[] args) {
- SpringApplication.run(SpringbootActionApplication.class, args);
- }
- }
运行项目, 在浏览器中输入 http://localhost:8080/, 会看到如下信息:
这种方式和在 Spring 项目中的使用方式一样, 更多的细节, 可以查看我之前总结的博客:
Spring 入门 (九): 运行时值注入.
3. 使用 @ConfigurationProperties 注解获取配置文件值
Spring Boot 还提供了 @ConfigurationProperties 注解来获取配置文件值, 该种方式可把配置文件值和一个 Bean 自动关联起来, 使用起来更加方便而且类型安全, 建议使用这种方式.
首先, 在 application.YAML 中添加如下配置:
- author:
- name: wangyunfei
- age: 32
然后, 新建类 AuthorSettings, 添加 @Component 注解和 @ConfigurationProperties 注解:
- package com.zwwhnly.springbootaction;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
- @Component
- @ConfigurationProperties(prefix = "author")
- public class AuthorSettings {
- private String name;
- private Integer age;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- }
这里的重点是 @ConfigurationProperties 注解, 它的 prefix 属性用来指定配置的前缀, 如本例中的 author.
然后修改启动类的代码为:
- package com.zwwhnly.springbootaction;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.Web.bind.annotation.RequestMapping;
- import org.springframework.Web.bind.annotation.RestController;
- @RestController
- @SpringBootApplication
- public class SpringbootActionApplication {
- @Autowired
- private AuthorSettings authorSettings;
- @RequestMapping("/")
- public String index() {
- return "author name is" + authorSettings.getName() + "and author age is" + authorSettings.getAge();
- }
- public static void main(String[] args) {
- SpringApplication.run(SpringbootActionApplication.class, args);
- }
- }
运行项目, 在浏览器中输入 http://localhost:8080/, 会看到如下信息:
4. 使用 Profile 实现多环境配置管理
一般情况下, 我们开发的应用程序都会有多套环境, 如 dev 环境, qa 环境, prod 环境, 那么如何实现多套环境下的配置管理呢?
其实在 Spring Boot 下, 我们可以使用 Profile 来实现, 接下来讲解下具体的实现方式.
首先, 新建 2 个配置文件: application-dev.YAML,application-prod.YAML.
此时的项目结构如下图所示:
如果有的同学比较喜欢用 properties 文件, 可以用下图中的方式新建:
默认情况下, 启动的端口号为 8080, 如果我们希望在 dev 环境使用端口号 8082, 在 prod 环境使用端口号 8083, 那么可以修改配置文件如下:
application-dev.YAML 新增如下配置:
- server:
- port: 8082
application-prod.YAML 新增如下配置:
- server:
- port: 8083
运行项目, 如下图所示:
我们会发现, 仍然使用的是默认的端口号 8080, 那么如何指定使用 dev 或者 prod 环境的端口呢?
我们需要在 application.YAML 新增如下配置:
- spring:
- profiles:
- active: dev
此时, 再次运行项目, 会发现使用的是端口号 8082, 也就是 application-dev.YAML 文件中配置的.
如果希望使用 prod 环境的, 可以修改配置为:
- spring:
- profiles:
- active: prod
运行结果为:
关于 Spring 项目中 Profile 的使用可以查看我之前总结的博客: Spring 入门 (七):Spring Profile 使用讲解.
5. 源码及参考
源码地址: https://github.com/zwwhnly/springboot-action.git , 欢迎下载.
汪云飞《Java EE 开发的颠覆者: Spring Boot 实战》
SpringBoot - 多 Profile 使用与切换
IDEA 如何创建. properties 文件
6. 最后
来源: https://www.cnblogs.com/zwwhnly/p/11750325.html