1.配置文件
1.1类型
Spring Boot支持两种格式的配置文件
属性文件:application.properties(中文和属性可读性和支持性不好)
Yaml文件:application.yml (可读性好,方便书写,idea给与支持)
1.2YAML
YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
YAML语法格式:
标准格式:key:(空格)value
使用空格代表层级关系,以“:”结束
2.常用配置
web常用配置项 | 默认值 | 说明 |
debug | false | 开启/关闭调试模式 |
server.port | 8080 | 服务器脚本 |
server.servlet.context-path | / | 应用上下文 |
spring.http.encoding.charset | utf-8 | 默认字符集编码 |
spring.thymeleaf.cache | true | 开启关闭页面缓存 |
spring.mvc.date-format | 例:yyyy-MM-dd | 日期输入格式 |
spring.jackson.date-format | 例:yyyy-MM-dd HH:mm:ss SSS | json输出的日期格式 |
spring.jackson.time-zone | 例=GMT+8(北京时间相对伦敦时间相差8个时区故+8) | 设置GMT时区 |
更多日志可查看spring官网:地址
3.日志
3.1定义
日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。
具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用,尤其是大型项目上线之后,紧急处理问题非常重要
3.2日志概括
3.3spring默认支持的常用配置(版本不同可能会有些许不一致的地方)
日志常用配置项 | 默认值 | 说明 |
logging.file.path |
| 日志输出的文件 |
logging.level.ROOT | info | 设置日志的输出级别(debug,info,warn,error) ROOT代表全局设置 |
logging.level.* | info | 定义指定包的输出级别 |
logging.config | logback-spring.xml | 日志的配置文件 |
Logging.level.org.springframework=ERROR |
| 设置指定包的日志输出级别 |
因为默认spring提供的日志项无法满足项目需求(如日志切割),可以使用logback的官方最细粒度的配置就可以满足需要
3.4logback
logback是log4j 的作者重新编写的产品,logback类似于log4j的优化版,但本质上不是一个产品
他们和slf4j的区别类似于 w3c只定义html 不实现,而谷歌实现了html的关系
3.4.1使用Logback自定义日志配置
方法:
(1).将配置中关于log的配置全部删除
(2)将logback.xml复制到项目目录下(可以从官方下载)
logback.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志保存的路径-->
<property name="LOG_HOME" value="d:/logs" />
<!--定义一个控制台输出器,名为console-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--按pattern指定的格式输出日志,编码为UTF-8-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{30} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--定义一个日滚动(每天生成一份)的日志文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--按pattern指定的格式输出日志,编码为UTF-8-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{30} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 定义保存的文件名 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--%d{yyyy-MM-dd}代表每天生成一个新的日志-->
<fileNamePattern>${LOG_HOME}/mysprintboot_%d{yyyy-MM-dd}.log</fileNamePattern>
<!--日志最多保存90天,也就是90份-->
<maxHistory>90</maxHistory>
</rollingPolicy>
<!-- 在日滚动文件中,强制只保存错误INFO级别以上信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 定义日志全局最低输出级别是INFO,同时向控制台和日滚动文件输出 -->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</configuration>
(3).根据自己需要修改logback配置文件
如日志的输出位置等等
(4)测试成功
启动项目后,会在你指定的目录下生成日志文件
4.环境配置
在项目中经常会根据不同的环境更改不同的配置,比如线上环境数据库的配置等等,有时候配置文件很复杂,更改起来比较麻烦,此时我们可以生成多个配置文件,根据不同的需求选择不同的配置文件进行运行,既简单又方便
4.1环境配置
Spring Boot可针对不同的环境提供不同的Profile文件。
Profile文件的默认命名格式为application-{env}.yml
使用spring.profiles.active选项来指定不同的profile
步骤如下:
步骤一:新建application-dev.yml和application-pro.yml配置文件
步骤二:修改不同的配置内容 如,将application-dev.yml中端口设置为80, 将application-pro.yml中端口设置为8000
步骤三:在application.yml文件中调用配置文件
spring:
profiles:
active: dev
调用开发模式中的配置文件
注:此时当application-dev.yml配置文件中的内容和application.yml中的内容有重复的时候,系统会以application-dev.yml为主
4.2logback配置
如果使用了logback配置文件的话需要修改日志配置
SpringBoot当看到logback-spring.xml文件存在的时候,才会启动日志的环境切换,logback.xml文件没法做到
步骤一:更改默认的logback.xml为logback-spring.xml
步骤二. 在需要切换的环境上增加springProfile标签
<springProfile name="dev">
<property name="LOG_HOME" value="m:/zoe/logs/dev/" />
</springProfile>
<springProfile name="prd">
<property name="LOG_HOME" value="m:/zoe/logs/prd/" />
</springProfile>
5.自定义配置
Spring Boot内置的配置项远远不能支撑我们的程序运行,在项目设计的时候,往往因为扩展性的需要,项目需要预留很多自定义设置项,Spring Boot允许我们配置自定义选项。
5.1自定义选项注入
在 Spring Boot中,有两种方式使用自定义选项
@Value 单个属性注入
@ConfigurationProperties 类型安全加载
5.2@value使用
步骤一:新建config.propertites
auther.name=zoe
auther.sex=女
auther.work=程序员
auther.hoppy=编程,看书
auther.website=http://www.xbmn.top
auther.has_csdn=true
auther.csdnurl=https://blog.csdn.net/bitree1
注:一般propertites不支持中文,故需要修改设置 Setting --editer --File Encodings ---勾选Transparent native ...如下
步骤二:在启动类MyspringbootApplication中注入
//入口类启动时加载自定义配置文件
@PropertySource("classpath:config.properties")
步骤三:@value的用法
@Value("${auther.name}")
private String name;
@Value("${auther.work}")
private String work;
System.err.println("1-"+name+work);
结果
5.3@ConfigurationProperties 类型安全加载用法
步骤一,二:内容如上
步骤三:新建Java类,使用@ConfigurationProperties自动注入匹配的bean
package com.zoe.myspringboot.controller;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @Author: zoe
* @Date: 2020/8/25 16:40
* @Description:自定义配置文件封装bean
*/
@Component //这是一个组件类。加这个注解,启动时会自动注入
@ConfigurationProperties(prefix = "auther")//将auther开头的属性自动赋值给对应的bean
public class autherConfig {
private String name ;
private String sex;
private String work;
private String hoppy;
private String website;
private Boolean hasCsdn;
private String csdnurl;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
public String getHoppy() {
return hoppy;
}
public void setHoppy(String hoppy) {
this.hoppy = hoppy;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public Boolean getHasCsdn() {
return hasCsdn;
}
public void setHasCsdn(Boolean hasCsdn) {
this.hasCsdn = hasCsdn;
}
public String getCsdnurl() {
return csdnurl;
}
public void setCsdnurl(String csdnurl) {
this.csdnurl = csdnurl;
}
}
重点关注
@Component //这是一个组件类。加这个注解,启动时会自动注入
@ConfigurationProperties(prefix = "auther")//将auther开头的属性自动赋值给对应的bean
这2个注解
步骤四:使用@Resourse或者@Autowire
@Resource//也可以用@autowire ioc容器自动注入匹配的bean
private autherConfig auther;
System.err.println("2-"+auther.getCsdnurl());
结果打印
6.项目源码
coding:https://github.com/bitree1/springboot
关注
如果有问题,请在下方评论
想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码