SpringBoot配置文件

一、配置文件介绍

在springboot项目中,系统默认会在src/main/Java/resources目录下创建一个application.properties。该全局配置文件的作用是对一些默认配置的配置值进行修改,包括项目中的数据库配置、缓存配置、相关变量配置、端口配置、日志配置等。

二、配置分类

springboot支持.properties.yml文件。

1、.properties文件

采用等式(key–value)配置,例如server.port=8080表示项目端口使用8080端口。

2、.yml文件

采用梯级呈现的的配置,例如

server:
  port: 8080

也表示配置端口号。
备注:yml文件配置需要注意点:

  1. 不同“等级” 用冒号隔开,例如server是第一级,port是第二级;
  2. 次等级的前面是空格,如果配置不正确的话会有提示(变量变灰),例如port前面是一个空格;
  3. 冒号之后如果有值,那么冒号和值之间至少有一个空格,例如8080前有个空格。

三、多文件配置

在现实的开发环境中,我们需要不同的配置环境;格式为application-{profile}.properties或者application-{profile}.yml(注意前面的application要一致),其中{profile}对应你的环境标识,比如:
application-test.properties:测试环境,用于测试环境中
application-dev.properties:开发环境,在开发的时候使用
application-prod.properties:生产环境,用于上线环境
例如:在dev 文件中的端口号设置为:

server:
  port: 8081

而prod文件中的端口号设置为:

server:
  port: 8082

在application.yml中添加:

spring:
  profiles:
  active: dev

表示使用开发环境,该文件中的环境配置变量就是该文件中的值,该项目的端口号为8081。

四、读取配置

在springboot项目中一般会自动去读取配置文件中的配置信息,但是对于自定义的相关变量取值需要使用如下代码:
1、配置文件

server:
 port: 8081

name:
  lxw
age:
  25

2、测试文件

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: lxw
 * @Date: 2018/10/19 19:36
 * @email: 1229703575@qq.com
 * @Description: 测试文件
 */
@RestController
@RequestMapping("/")
public class TestContoller {
	//采用@Value注解获取配置文件中的变量值
    @Value("${name}")				
    private String name;
    @Value("${age}")
    private int age;

	//打印输出
    @RequestMapping(value = "/hello")
    public String hello() {
        return name + ":" + age;
    }
}

3、结果
测试输出

五、自定义配置文件

有时候需要配置一些自定义的xml配置文件,或者自定义命名的properties文件,例如test.properties,这时候获取文件的配置信息就会不一样了。

1、xml文件配置

例如:logback-spring.xml(springboot中的logback日志配置)

<?xml version="1.0" encoding="UTF-8"?>
<!-- 分级别异步文件日志输出配置 -->
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <jmxConfigurator/>

    <!-- 日志输出路径,自定义 -->
    <property name="LOG_HOME" value="./logs"/>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/liuxw.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L -%msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小 -->
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

这时候需要在application.yml文件中添加以下代码将xml文件引入到配置中。

logging:
  config: classpath:logback-spring.xml
2、application.yml文件配置

例如:
pom文件引入如下包:

 	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

配置文件如下:

com:
 name:
  lxw
 age:
  25

配置一个类来进行接收

@Component
@ConfigurationProperties(prefix = "com")								//变量前缀
public class Test{
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

使用输出:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: lxw
 * @Date: 2018/10/19 19:36
 * @email: 1229703575@qq.com
 * @Description: 测试文件
 */
@RestController
@RequestMapping("/")
public class TestContoller {
    @Autowired
    private Test test;				//实体类添加@Configuration 后才能使用

    @RequestMapping(value = "/test")
    public String test() {
        return test.getName() + ":" + test.getAge();
    }
}

输出

版本问题

使用的是1.5以前的版本,那么可以通过locations指定properties文件的位置,

@ConfigurationProperties(prefix = "com",locations="test.properties")

但是1.5版本后就没有这个属性了。

以上就是在springboot中常用的配置过程,有些可能会因为版本不一样而导致一些差距,可以自行检查其不同之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值