1.1 springboot的核心配置
1.1.1 常规配置

1.1.2 日志配置 logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="rollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/server.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/server.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="async-stdout" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="stdout" />
<includeCallerData>true</includeCallerData>
</appender>
<appender name="async-rollingFile" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="rollingFile" />
<includeCallerData>true</includeCallerData>
</appender>
<logger name="org.quartz.impl.jdbcjobstore.JobStoreTX" level="INFO"/>
<logger name="org.quartz.impl.jdbcjobstore.StdRowLockSemaphore" level="INFO"/>
<logger name="org.springframework.amqp.rabbit.core.RabbitTemplate" level="INFO"/>
<logger name="org.springframework.amqp.rabbit.listener.BlockingQueueConsumer" level="INFO"/>
<root level="INFO">
<appender-ref ref="async-stdout" />
<appender-ref ref="async-rollingFile" />
</root>
</configuration>
1.1.3 多环境配置


一个jar包俩配置文件,同时启动俩个,在不同的cmd页面


1.2 springboot的核心注解与统一异常
1.2.1 核心注解

1.2.2 统一异常处理项目3.2.2
1.2.2.1 统一异常处理类MyControllerAdvice.java
package com.agan.springboot.helloworld.exception;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/\*\*
\* @version 1.0
\*/
@ControllerAdvice
public class MyControllerAdvice {
/\*\*
\* 全局捕获异常,只要作用在@RequestMapping方法上,所有的异常信息都会被捕获到。
\* @param ex
\* @return
\*/
@ResponseBody
@ExceptionHandler(value=Exception.class)
public Map<String,Object> errorHandler(Exception ex){
Map<String,Object> map=new HashMap<String, Object>();
map.put("code", -1);
map.put("msg", ex.getMessage());
return map;
}
@ResponseBody
@ExceptionHandler(value=BusinessException.class)
public Map<String,Object> errorHandler(BusinessException ex){
Map<String,Object> map=new HashMap<String, Object>();
map.put("code", ex.getCode());
map.put("msg", ex.getMsg());
return map;
}
}
1.1 如何监控springboot的监控状况
1.1.1 使用actuator检查与监控springboot健康状况3.2.2




1.1.1 可视化的springboot-admin



1.1.1.1 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.agan.springboot</groupId>
<artifactId>springboot-admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-admin</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
#### 1.1.1.1 启动类
package com.agan.springboot.springbootadmin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.codecentric.boot.admin.config.EnableAdminServer;
@SpringBootApplication
@EnableAdminServer
public class SpringbootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootAdminApplication.class, args);
}
}
### 1.1.1 启动3.2.2和3.5.2


Metrics:
gauge: 每个http请求的平均耗时(ms)
instance.uptime: 运行时间
mem: 内存
heap: 堆
stack: 栈
theads: 当前线程
peak: 峰值max
daemon: 守护线程数
total started: 总启动数
Trace : 当前项目死活
processors: cpu核数