最近试着搭建一个SpringBootDemo,版本为2.0.5.RELEASE,使用JDK1.8,使用druid连接池,日志使用log4j2,记录一下自己遇到的问题吧。

  1. 日志问题

在spring-boot-starter或者(spring-boot-starter-web)中自带的logback日志,我使用的是Log4j2,所以要去掉logback的依赖,代码如下,

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>

log4j2配置有三种方式,xml,yml,json格式,我贴一下我的log4j2-spring.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!--设置log4j2的自身log级别为warn-->
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration status="warn" monitorInterval="30"><!--先定义所有的appender--><appenders><!--这个输出控制台的配置--><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--><File name="log" fileName="logs/test.log" append="true"><PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/></File><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileDebug" fileName="${sys:user.home}/logs/debug/debug.log"filePattern="${sys:user.home}/logs/debug/debug-%d{yyyy-MM-dd}-%i.log"><Filters><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/></Filters><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error/error.log"filePattern="${sys:user.home}/logs/error/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="ERROR"/><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><loggers><!--过滤掉spring和hibernate的一些无用的debug信息--><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><root level="all"><appender-ref ref="Console"/><appender-ref ref="RollingFileDebug"/><appender-ref ref="RollingFileError"/></root></loggers></configuration>

2.druid连接池

druid连接池依赖

        <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>

在yml中配置DataSource,可以访问/druid/index.html,查看druid的连接池的一些监控信息,比如慢sql,连接池使用情况之类

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/tlusername: rootpassword:# 配置初始化大小、最小、最大initial-size: 20min-idle: 1max-active: 50#配置获取连接等待超时的时间max-wait: 60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000#配置一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 300000#测试连接validation-query: SELECT 'x'#申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性test-while-idle: true#获取连接时执行检测,建议关闭,影响性能test-on-borrow: false#归还连接时执行检测,建议关闭,影响性能test-on-return: false#是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭pool-prepared-statements: false#开启poolPreparedStatements后生效max-pool-prepared-statement-per-connection-size: 20#配置扩展插件,常用的插件有=>stat:监控统计  log4j:日志  wall:防御sql注入filters: stat,wall,log4j2# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# Druid WebStatFilter配置web-stat-filter:enabled: trueurl-pattern: /*exclusions: '*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*'# Druid StatViewServlet配置stat-view-servlet:enabled: trueurl-pattern: /druid/*reset-enable: truelogin-username: adminlogin-password: admin# 配置日志输出filter:slf4j:enabled: truestatement-create-after-log-enabled: falsestatement-close-after-log-enabled: falseresult-set-open-after-log-enabled: falseresult-set-close-after-log-enabled: falseactivemq:broker-url:

3.配置404和500页面

在1.x中可以使用EmbeddedServletContainerCustomizer 这个类来实现自定义错误界面,但是在2.x中这个类没了,被WebServerFactoryCustomizer这个类取代了,

import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;/*** @author tianl* @ClassName ErrorPageConfig* @date 2018/9/21 9:13**/
@Configuration
public class ErrorPageConfig {@Beanstatic WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {@Overridepublic void customize(ConfigurableWebServerFactory factory) {ErrorPage error400Page = new ErrorPage(HttpStatus.BAD_REQUEST, "/static/error/400.html");ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/static/error/401.html");ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/static/error/404.html");ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/static/error/500.html");factory.addErrorPages(error400Page, error401Page, error404Page, error500Page);}};}
}

关于SpringBoot的配置,最近看到一篇比较详细的传送门

【SpringBoot】SpringBoot2.x 配置 笔记相关推荐

  1. CAS学习笔记五:SpringBoot自动/手动配置方式集成CAS单点登出

    本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式实现CAS客户端登出及单点登出. 本文基于<CAS学习笔记三:SpringBoot自动/手动配置方式集成C ...

  2. SpringBoot笔记:SpringBoot启动参数配置

    文章目录 目的 测试代码 配置文件配置 获取自定义参数 项目打包发布 修改启动配置 方式一:系统变量 方式二:命令行参数 springboot启动参数解释 目的 1.熟悉springboot多环境配置 ...

  3. SpringBoot2.x系列教程11--小花样之SpringBoot其他常用配置

    SpringBoot系列教程11--小花样之SpringBoot其他常用配置 作者:一一哥 一. 修改端口号和访问路径 在Spring Boot 项目中会使用一个全局的配置文件application. ...

  4. SpringBoot2尚硅谷笔记

    SpringBoot2 网课链接 https://www.bilibili.com/video/BV19K4y1L7MT?from=search&seid=184166163201622010 ...

  5. springboot 跨域配置cors

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html.Css.Js,然后在Js中通过Ajax ...

  6. SpringBoot集成Redis用法笔记

    今天给大家整理一下SpringBoot集成Redis用法笔记,希望对大家能有所帮助! 一.Redis优点介绍 1.速度快 不需要等待磁盘的IO,在内存之间进行的数据存储和查询,速度非常快.当然,缓存的 ...

  7. SpringBoot集成Mybatis用法笔记

    今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...

  8. 自学SpringBoot,超详细笔记

    1.SpringBoot 回顾下什么是Spring? Spring是一个开源框架,2003年兴起的一个轻量级的java开发框架,是为了解决企业级应用开发的复杂性而创建的,简化开发 Spring是如何简 ...

  9. 尚硅谷springboot 2核心技术学习笔记

    开发前先查看系统Java和maven的版本 参考资料 1.尚硅谷/SpringBoot2核心技术与响应式编程 2.springboot官网 3.版本升级变化 maven环境配置 <mirrors ...

最新文章

  1. 树莓派系统安装_树莓派系统安装
  2. 条件CSS的高级用法
  3. 黄海造船周身流动的信息化血液
  4. Security+ 学习笔记54 安全政策
  5. trace (矩阵的迹) 的性质
  6. 数据算法_数据结构和常用算法
  7. java 16进制转中文乱码
  8. fiddler websocket 乱码
  9. git常用命令(不定时更新)
  10. excel中相对引用、绝对引用、混合引用
  11. 想查看实时卫星影像?最近一周就不错了
  12. Failed to start reboot.target: 连接超时
  13. 汽车销量查询小助手(小程序)销量趋势图功能及代码知识分享
  14. 水面渲染-浮力的一种实现
  15. 列表解析(值得学习)
  16. 数学建模常用算法汇总及python,MATLAB实现(五) —— 拟合
  17. *SAS语言结构**
  18. 曲速未来:区块链用于房地产是否会起作用
  19. 标致新408全球首发采用全新狮标;三星电子公布0.56微米2亿像素图像传感器 | 美通企业日报...
  20. PROUMB_ios安卓 testlight proumb.cow/apps/android开发包安装ggzy.jianxi

热门文章

  1. DevOps教程:DevOps 生命周期
  2. 罗格数据:生命周期动态模拟技术及其在税收领域应用初探 | 会员专栏
  3. 使用神器you-get获取萧大bilibili课程视频
  4. golang开发的准备 - gvm(go版本管理软件)的安装
  5. 工程学导论的学习感悟
  6. MySQL中单引号、双引号和反引号的区别
  7. github上的html项目怎么运行,GitHub搭建简单的项目“Hello HTML”
  8. MFC下txt文件的读写操作
  9. 制造系统的发展方向:收敛? 发散?
  10. 你不知道的浏览器页面渲染机制