提示:以下是本篇文章正文内容,下面案例可供参考
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html)
团队出品,为监控而生的数据库连接池
druid数据库连接池是最好的数据库连接池
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.2.3version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot-starterartifactId>
<version>1.2.3version>
dependency>
application.properties
spring.datasource.druid.url=jdbc:mysql://localhost:3306/tab_account
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=10
spring.datasource.druid.max-wait=10
#是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
#在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
#spring.datasource.druid.pool-prepared-statements=true
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
#配置扩展插件:监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall
spring.datasource.druid.filters=stat,wall
#spring.datasource.druid.filter.stat.log-slow-sql=true
#spring.datasource.druid.filter.stat.slow-sql-millis=2000
# 合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true
#配置应用访问端口号
server.port=18888
##工程名 可以不设置默认 配置项目名称(上下文访问路径)/
server.servlet.context-path=/bu
##mybatis实体别名配置
mybatis.type-aliases-package=com.aaa.springboot_mybatis_demo_20211213.entity
##mapper文件扫描
mybatis.mapper-locations=classpath:mapper/*.xml
package com. XXX.XXX.controller;
@Configuration
public class DruidConfig {
@Bean //
public ServletRegistrationBean druidServlet() {
// 现在要进行druid监控的配置处理操作
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(
new StatViewServlet(), "/druid/*");
// 白名单,多个用逗号分割, 如果allow没有配置或者为空,则允许所有访问
servletRegistrationBean.addInitParameter("allow", "127.0.0.1,192.168.41.115,192.168.41.23");
// 黑名单,多个用逗号分割 (共同存在时,deny优先于allow)
servletRegistrationBean.addInitParameter("deny", "192.168.41.116");
// 控制台管理用户名
servletRegistrationBean.addInitParameter("loginUsername", "admin");
// 控制台管理密码
servletRegistrationBean.addInitParameter("loginPassword", "tiger");
// 是否可以重置数据源,禁用HTML页面上的“Reset All”功能
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean ;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ;
filterRegistrationBean.setFilter(new WebStatFilter());
//filterRegistrationBean.setFilter(new CharEncodingFilter());
//所有请求进行监控处理
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
return filterRegistrationBean ;
}
@Bean
//@PropertySource("")
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
访问 http://127.0.0.1:9999/druid/login.html
Log4j
是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、数据库等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j有7种不同的log级别,按照等级从低到高依次为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。如果配置为OFF级别,表示关闭log。 Log4j支持两种格式的配置文件:properties和xml。包含三个主要的组件:Logger、appender、Layout。
Log4j2
Spring Boot1.4以及之后的版本已经不支持log4j,log4j也很久没有更新了,现在已经有很多其他的日志框架对Log4j进行了改良,比如说SLF4J、Logback等
详细
3. SLF4J
SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,而是通过Facade Pattern提供一些Java logging API,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
代码如下(示例):
# 日志配置
#配置日志文件的路径
logging.file.path=d:/springboot-log
#配置日志文件名,如果该属性不配置,默认文件名为spring.log
# windows下:path和name不可以同时配置,通知配置只有name起效##logging.file.name=springboot.log
logging.file.name=cc.log
#配置日志级别
logging.level.root=info
##日志级别 trace < debug < info < warn < error < fatal
#定制控制台日志输出格式
# %d{HH:mm:ss.SSS}——日志输出时间
# %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
# %-5level——日志级别,并且使用5个字符靠左对齐
# %logger- ——日志输出者的名字
# %msg——日志消息
# %n——平台的换行符
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss.SSS} [%thread] %-5level %logger- %msg%n
#定制文件日志输出格式
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
#mybatis配置日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
配置日志不需要导入jar,日志包在父项目中已经引入
resources下创建logback.xml或者logback-spring.xml,复制配置进去
<configuration debug="false">
<property name="LOG_HOME" value="D:/projects/a/b/log" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n pattern>
encoder>
appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/springbootdemo%d{yyyy-MM-dd}.logFileNamePattern>
<MaxHistory>30MaxHistory>
rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
encoder>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MBMaxFileSize>
triggeringPolicy>
appender>
<logger name="com.apache.ibatis" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
root>
configuration>
简介:
借助Swagger开源和专业工具集,为用户,团队和企业简化API开发。了解Swagger如何帮助您大规模设计和记录API。 Swagger工具的强大功能始于OpenAPI规范— RESTful API设计的行业标准
就是后端开发测试的好工具 而且 开源免费 好用 不过必须是result风格的
1.加依赖
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>
2.代码
package com.aaa.springboot_mybatis_demo_20211213.configur;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/**
* @author zhangyifan
* @version 8.0
* @description:
* @date 2021/12/14 9:30
*/
@Configuration
public class SwaggerConfiguration {
/**
* 创建一个docket
* @return
*/
@Bean
public Docket docket( ) {
return new Docket(DocumentationType.SWAGGER_2)
//构造注入 可以 apiInfo() 下面要加@Bean
.apiInfo(apiInfo())
//.enable(false) //swagger不能访问
.select()
//配置扫描这个类头是有这个类注释的类
.apis(RequestHandlerSelectors.withClassAnnotation(ApiOperation.class))
//配置要扫描接口的方式
//.apis(RequestHandlerSelectors.basePackage("com.aaa.sbm.controller"))
//路径过滤
.paths(PathSelectors.any())
.build();
}
/**
* apiInfo
* @return
*/
@Bean
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot中使用Swagger2构建RESTful APIs")
.description("更多请关注http://www.baidu.com")
.termsOfServiceUrl("http://www.baidu.com")
.contact(new Contact("张工","http://www.baidu.com","[email protected]"))//联系人 作者信息
.version("1.0")
.build();
}
}
3.开启swagger
@EnableSwagger2
4.可以选择的配置
方法
@ApiOperation("")
参数:
@ApiParam("")
5.测试 直接访问
http://localhost:8888/swagger-ui.html