1 什么是SpringBoot
特点:
1 创建独立的Spring应用程序
2 嵌入的Tomcat,无需部署WAR文件
3 简化Maven配置
4 自动配置Spring
5 提供生产就绪型功能,如指标,健康检查和外部配置
6 绝对没有代码生成和对XML没有要求配置
2 SpringBoot入门
1 创建Maven工程,添加SpringBoot依赖
<!-- springboot依赖jar --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.8.RELEASE</version> </dependency> |
2 SpringBoot入口
/** * 后台启动入口 * @author folie */ @Controller @SpringBootApplication public class AdminApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(AdminApplication.class); } } 3 SpringBoot文件配置(Spring,Tomcat,Mybatis-plus) 3.1 application.yml相关的配置文件
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 8080
connection-timeout: 5000ms
servlet:
context-path: /admin
spring:
# 环境 dev|prod
profiles:
active: dev
# jackson时间格式化
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
enabled: true
#集群环境,需要打开注释,把session存放到redis中,session过期时间为60分钟
session:
store-type: redis
timeout: 3600s
#mybatis
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.account.xx.*.entity
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 0
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 1
#驼峰下划线转换
db-column-underline: true
#刷新mapper 调试神器
#refresh-mapper: true
#数据库大写下划线转换
#capital-mode: true
#序列接口实现类配置
#key-generator: com.baomidou.springboot.xxx
#逻辑删除配置
logic-delete-value: -1
logic-not-delete-value: 0
#自定义填充策略接口实现
#meta-object-handler: com.baomidou.springboot.xxx
#自定义SQL注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
#微信小程序配置
weixin:
appid: XXXXX
secret: xxxxxxx
|
3.2 application-dev.yml相关配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
url: jdbc:mysql://47.93.216.XXX:3306/xxxx?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: xxx
password: xxx
initial-size: 10
max-active: 100
min-idle: 10
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
#validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
stat-view-servlet:
enabled: true
url-pattern: /druid/*
#login-username: admin
#login-password: admin
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
wall:
config:
multi-statement-allow: true
devtools:
restart:
#排除那个目录的文件不需要restart
exclude: templates/**, static/**
enabled: true
additional-paths: account-admin/src/main/java
redis:
database: 1
host: 47.93.xxx.xxx
port: 6379
password: xxx # 密码(默认为空)
timeout: 6000ms # 连接超时时长(毫秒)
jedis:
pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接 |
3.3 application-prod.yml相关的配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
url: jdbc:mysql://rm-bp1nfl7z62x71h360.mysql.rds.aliyuncs.com:3306/XXX?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: xxx
password: xxx
initial-size: 10
max-active: 100
min-idle: 10
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
#validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
stat-view-servlet:
enabled: true
url-pattern: /druid/*
#login-username: admin
#login-password: admin
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
wall:
config:
multi-statement-allow: true
# redis
redis:
database: 1
host: xxx.redis.rds.aliyuncs.com
port: 6379
password: xxx # 密码(默认为空)
timeout: 6000ms # 连接超时时长(毫秒)
jedis:
pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
# 日志配置
logging:
path: /data/account/logs
# 项目配置参数 |
3.4 Logback-spring.xml日志打印
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--<include resource="org/springframework/boot/logging/logback/base.xml" />-->
<substitutionProperty name="LOG_HOME" value="${LOG_PATH}"/>
<substitutionProperty name="LOG_HOME_SERVICE" value="${LOG_PATH}/service"/>
<substitutionProperty name="LOG_HOME_ERROR" value="${LOG_PATH}/error"/>
<!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%-30(%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n %ex{full}
</Pattern>
</layout>
</encoder>
</appender>
<appender name="serviceRolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME_SERVICE}.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME_SERVICE}-%d{yyyyMMdd}.log</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%-30(%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n %ex{full}
</Pattern>
</layout>
</encoder>
</appender>
<appender name="errorRolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${LOG_HOME_ERROR}.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME_ERROR}-%d{yyyyMMdd}.log</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%-30(%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n %ex{full}
</Pattern>
</layout>
</encoder>
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<logger name="com.birdwork" level="DEBUG">
<appender-ref ref="serviceRolling"/>
</logger>
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<logger name="org.springframework.web" level="ERROR"/>
<logger name="org.springboot.sample" level="ERROR"/>
<logger name="com.birdwork" level="INFO">
<appender-ref ref="serviceRolling"/>
</logger>
</springProfile>
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="errorRolling"/>
</root>
</configuration> |
|