SpringBoot学习之配置文件

Spring Boot 配置说明

Spring Boot 提供了对应用进行自动化配置。相比以前 XML 配置方式,很多显式方式申明是不需要的。二者,大多数默认的配置足够实现开发功能,从而更快速开发。

Spring Boot 推荐是无配置文件,可以不需要像之前一样,在 applicationContext.xml 里面配置一大堆的bean、aop以及和各种框架的整合了。虽然说 Spring Boot 已经做了好多默认的配置,但是根据不同的业务情况,Spring Boot 默认的配置肯定是无法满足的,所以 Spring Boot 提供了两种配置文件:application.propertiesapplication.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wayfreem

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值