一、快速入门
可以进入https://start.spring.io/ 快速创建一个spring boot的入门程序,其中该maven工程目录结构如下:
tip:其中Application类是启动类,启动类目录层次要高于controller、service等其他类
二、全局配置文件 application.properties 以下是简单的三种配置
#自定义端口号
server.port=80
# 自定义属性 使用时需要用@value("${msg}")
msg=Hello,SpringBoot
#在配置文件中引用自定义属性 tip:如果直接没有空则连在一起,有空无论空有多大都只空一格
reference=hello ${msg}
#定义一个随机值变量 以下是随机生成一个1024到9999之间的整数 可用来生成随机端口 server.port=${random.int[1024,9999]}
number=${random.int[1024,9999]}
三、yml配置文件(yaml语言) 树状结构
server:
port: 8090
number: ${random.int[1024,9999]}
#树形结构 分层次结构,便于查阅 第二层结构要比第一层缩进两格 :冒号后需要有一行空格
yml和properties文件同时存在的时候,会优先使用properties文件
四、分析日志的配置、
直接将logback.xml 放置在src/main/resources下
具体logback.xml内容如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="30 minutes">
<!-- ==================================================================================== -->
<property name="logDir" value="logs/" />
<!-- 打印到控制台 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
</encoder>
</appender>
<!-- ==================================================================================== -->
<appender name="infolog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDir}/info/log.%d{yyyy-MM-dd.HH}.%i.log.gz
</fileNamePattern>
<!-- 限制文件最大保存时间为15天; 15*24=360 -->
<maxHistory>360</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 当文件大小超过60M时触发滚动,这里设置60M -->
<maxFileSize>60MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
</encoder>
</appender>
<appender name="debuglog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDir}/debug/log.%d{yyyy-MM-dd.HH}.%i.log.gz
</fileNamePattern>
<!-- 限制文件最大保存时间为15天; 15*24=360 -->
<maxHistory>360</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 当文件大小超过60M时触发滚动,这里设置60M -->
<maxFileSize>60MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
</encoder>
</appender>
<appender name="errorlog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDir}/error/log.%d{yyyy-MM-dd.HH}.%i.log.gz
</fileNamePattern>
<!-- 限制文件最大保存时间为15天; 15*24=360 -->
<maxHistory>360</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 当文件大小超过60M时触发滚动,这里设置60M -->
<maxFileSize>60MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
</encoder>
</appender>
<!-- 异步日志配置 -->
<appender name="infolog_async" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>5000</discardingThreshold>
<queueSize>50000</queueSize>
<appender-ref ref="infolog" />
</appender>
<appender name="errorlog_async" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>5000</discardingThreshold>
<queueSize>50000</queueSize>
<appender-ref ref="errorlog" />
</appender>
<!-- 设置级别 建议不设置为debug,日志信息过多 -->
<root level="info">
<appender-ref ref="stdout" />
<appender-ref ref="debuglog" />
<appender-ref ref="infolog_async" />
<appender-ref ref="errorlog_async" />
</root>
</configuration>
五、多环境的配置
将全局配置文件按以下格式定义
application-profile.properties 其中profile为参数 具体指的是某个环境,可定义
具体的运行方式:
将工程install 后生成jar包
在cmd窗口使用 java -jar 带后缀名的jar包名称 --spring.profiles.active=profile 运行
六:全局异常处理
七:监控spring boot的健康
1.使用actuator
首先加入actuator的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启动项目,可以在console中看到以下信息
可以在浏览器输入以上路径查看 (譬如说 ip:端口号/health)
2.使用spring-boot-admin
快速入门页面http://codecentric.github.io/spring-boot-admin/2.1.2/#getting-started
根据页面描述加入依赖、加入注解、更改配置文件即可