Spring Boot 配置说明
Spring Boot 提供了对应用进行自动化配置。相比以前 XML 配置方式,很多显式方式申明是不需要的。二者,大多数默认的配置足够实现开发功能,从而更快速开发。
Spring Boot 推荐是无配置文件,可以不需要像之前一样,在 applicationContext.xml
里面配置一大堆的bean、aop以及和各种框架的整合了。虽然说 Spring Boot 已经做了好多默认的配置,但是根据不同的业务情况,Spring Boot 默认的配置肯定是无法满足的,所以 Spring Boot 提供了两种配置文件:application.properties
或 application.yml
。放置在 src/main/resources
目录 或者类路径 /config
下。
注:如果你工程没有这个application.properties(或者 application.yml),那就在src/main/java/resources目录下新建一个。
配置说明
默认配置
Spring Boot 自带了一堆的配置默认配置,我们只需要修改其中的参数值就可以修改掉默认的配置了。
注意:在使用配置文件的时候,application.properties 和
application.yml 这两个文件只能出现一个,其中一个存在的时候,另外一个最好屏蔽掉,或者改个名字。
application.properties
# 程序访问的端口
server.port=6060
# 程序访问的工程名称
server.servlet.context-path=/study
application.yml
下面代码中 port
参数前面是两个空
格,不是Tab键
,这个需要特别注意下。
server:
port: 6061
servlet:
context-path: /study
从上面的配置文件中可以看出:yaml 和 properties 的区别。传统我们使用的配置文件都是 properties,但是没有层级结构,yaml 就具有层级结构,表现的更加直观,清晰。两种都可以使用,可以根据开发习惯来选择哪种配置文件。
自定义属性配置
下面就是使用 application.properties 来说明
在配置文件中可以使用 ${属性}
来拼接出组合的配置属性。也可以使用 ${random}
来获取随机数。
config.flag=false
interface.url=127.0.0.1
interface.port=8080
interface.UrlPort=${interface.url}:${interface.port}
#获取随机int:${random.int}
#获取10以内的随机数:${random.int(10)}
#获取10-20的随机数:${random.int[10,20]}
#获取随机long:${random.long}
#获取随机uuid:${random.uuid}
使用 @Value 获取配置文件中的数据
新增代码,用于读取配置文件中的数据
ConfigController.java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 用于读取配置文件
*/
@RestController
public class ConfigController {
// 读取配置文件的属性,可以使用 boolean 类型
@Value("${config.flag}")
private boolean flag;
@Value("${interface.url}")
private String url;
@RequestMapping("/config")
public String getConfig(@RequestParam(value="name", defaultValue="World") String name) {
return "读取到的配置文件内容为,标记字段值:" + this.flag + ", url 地址为:"+ this.url;
}
}
使用 @ConfigurationProperties(prefix = “”) 获取配置文件中的数据
新增一个Bean文件:
ConfigRead.java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 用于读取配置文件
*/
@Component
@ConfigurationProperties(prefix = "interface")
public class ConfigRead {
private String url;
private String port;
private String UrlPort;
/*下面就是 getter 与 setter */
public String getUrl() { return url; }
public void setUrl(String url) { this.url = url; }
public String getPort() { return port; }
public void setPort(String port) { this.port = port; }
public String getUrlPort() { return UrlPort; }
public void setUrlPort(String urlPort) { UrlPort = urlPort; }
}
修改 ConfigController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 用于读取配置文件
*
* @author wuq
* @create 2018-07-12 18:47
*/
@RestController
public class ConfigController {
@Autowired
ConfigRead configRead; // 依赖注入配置文件读取类
// 读取配置文件的属性,可以使用 boolean 类型
@Value("${config.flag}")
private boolean flag;
@Value("${interface.url}")
private String url;
@RequestMapping("/config")
public String getConfig(@RequestParam(value="name", defaultValue="World") String name) {
return "读取到的配置文件内容为,标记字段值:" + configRead.getPort() + ", "+ configRead.getUrlPort() + "," + configRead.getUrl();
}
}
多环境配置
实际开发中可能会有不同的环境,有开发环境、测试环境、生成环境。对于每个环境相关配置都可能有所不同,如:数据库信息、端口配置、本地路径配置等
在application.properties同目录下新建一下三个文件:
application-dev.properties //开发环境的配置文件
application-test.properties //测试环境的配置文件
application-prod.properties //生产环境的配置文件
修改 application.properties
中的内容
# 引用开发的配置文件
spring.profiles.active=dev
# 引用测试的配置文件
#spring.profiles.active=test
# 引用生产的配置文件
#spring.profiles.active=prod
可以看出上面三个配置文件符合 application-{profile}.properties
格式,而在application.properties添加的 spring.profiles.active=dev 中的dev正是上面配置文件中的 profile。根据具体环境进行切换即刻。
附
程序的项目结构图
注
yaml官网(本人觉得有点 Low):http://yaml.org/
yaml百度百科地址:https://baike.baidu.com/item/YAML/1067697?fr=aladdin
Spring Boot 官网上面的 yaml配置:https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-yaml
spirng boot默认配置项(这个当做工具备查吧):https://blog.csdn.net/li396864285/article/details/78132034