springboot进阶

文章目录

  • 一、整合数据库连接池 druid
    • 1、添加连接池pom
    • 2.修改配置
    • 3.创建一个DruidConfig监控配置:
  • 二、日志
    • 1.常用日志
    • 2.springboot。properties配置日志
    • 3.springboot的logback配置
  • 三、 springboot整合swagger



提示:以下是本篇文章正文内容,下面案例可供参考

一、整合数据库连接池 druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html)
团队出品,为监控而生的数据库连接池

druid数据库连接池是最好的数据库连接池

1、添加连接池pom

 <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>

2.修改配置

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

3.创建一个DruidConfig监控配置:

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

springboot进阶_第1张图片

二、日志

1.常用日志

  1. Log4j
    是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、数据库等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j有7种不同的log级别,按照等级从低到高依次为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。如果配置为OFF级别,表示关闭log。 Log4j支持两种格式的配置文件:properties和xml。包含三个主要的组件:Logger、appender、Layout。

  2. Log4j2

Spring Boot1.4以及之后的版本已经不支持log4j,log4j也很久没有更新了,现在已经有很多其他的日志框架对Log4j进行了改良,比如说SLF4J、Logback等
详细
3. SLF4J
SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,而是通过Facade Pattern提供一些Java logging API,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

  1. Logback
    Logback,一个“可靠、通用、快速而又灵活的Java日志框架”,logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK Logging。
    springboot默认使用了logback配置.
  2. Apache Commons Logging
    Apache Commons Logging ,之前叫 Jakarta Commons Logging(JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4+等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现。

2.springboot。properties配置日志

代码如下(示例):

# 日志配置

#配置日志文件的路径
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

3.springboot的logback配置

配置日志不需要导入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>

三、 springboot整合swagger

简介:
借助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
springboot进阶_第2张图片
4.可以选择的配置
在这里插入图片描述
方法
@ApiOperation("")
参数:
@ApiParam("")
5.测试 直接访问
http://localhost:8888/swagger-ui.html

springboot进阶_第3张图片

你可能感兴趣的:(Springboot,spring,boot,java,spring)