Spring Boot 专题系列二:SpringBoot 相关配置

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

 

关注

如果有问题,请在下方评论

想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值