• SpringBoot集成第三方框架配置注意事项


    SpringBoot集成第三方框架配置注意事项

    Junit

    依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    

    注意点

    spring-boot 2.5.4 版本默认使用的 junit 包是 junit5,所以在测试类上面的注解需要注意

    junit4

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootApplicationTests {}
    

    junit5

    @ExtendWith(SpringExtension.class)
    @SpringBootTest
    class SpringBootApplicationTests {}
    

    MyBatis

    依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <java.version>1.8</java.version>
        <!--注意点1: 因为spring boot高版本直接使用的mysql connect是8的版本,这里要定制指定版本号-->
        <mysql.version>5.1.47</mysql.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!--要想使用第三方日志工具必须先排除掉原来的-->
                <exclusion>
                    <artifactId>spring-boot-starter-logging</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--这个是为了打印日志的,在后面会讲解-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <!--这个是热更新用的,其实就是自动启动-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--这个是yml文件的提示用的,在老版本中好像要在打包插件里面需要排除,但是新版本好像就不会自动打包了,本配置就没有在插件里面排除了-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <!-- 换成druid稍后讲解 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    注意点

    • mysql-connector-java 这个在高版本springboot里面版本太高要特殊指定版本

    • 导入druid

      @Configuration
      public class DruidConfig {
      
          @ConfigurationProperties(prefix = "spring.datasource")
          @Bean
          public DataSource druidDataSource(){
              return new DruidDataSource();
          }
      
          /**
           * 配置监控服务器
           * @return 返回监控注册的servlet对象
           * @author SimpleWu
           */
          @Bean
          public ServletRegistrationBean statViewServlet() {
              ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
              //ServletRegistrationBean reg = new ServletRegistrationBean();
              //reg.setServlet(new StatViewServlet());
              //reg.addUrlMappings("/druid/*");
              // 添加IP白名单
              servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
              // 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
              //servletRegistrationBean.addInitParameter("deny", "127.0.0.1");
              // 添加控制台管理用户
              servletRegistrationBean.addInitParameter("loginUsername", "admin");
              servletRegistrationBean.addInitParameter("loginPassword", "123456");
              // 是否能够重置数据
              servletRegistrationBean.addInitParameter("resetEnable", "false");
              return servletRegistrationBean;
          }
      
          /**
           * 配置服务过滤器
           *
           * @return 返回过滤器配置对象
           */
          @Bean
          public FilterRegistrationBean statFilter() {
              FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
              // 添加过滤规则
              filterRegistrationBean.addUrlPatterns("/*");
              // 忽略过滤格式
              filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,");
              return filterRegistrationBean;
          }
      }
      
      spring:
        datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://ip:port
          username: xxxx
          password: xxxx
          type: com.alibaba.druid.pool.DruidDataSource # 这个type是最重要的,让springboot不再使用hikari
          filters: stat # 加上这个sql监控才会有数据
      # 下面这个是为了log4j2的
      logging:
        config: classpath:log4j2.xml
        level:
          cn.jay.repository: trace
      mybatis:
        config-location: classpath:mybatis-config.xml # 这个是配置sql打印日志的
      
    • Log4j2

      • 首先要在yaml文件里面配置上面的

      • log4j2.xml 配置超全

        <?xml version="1.0" encoding="UTF-8"?>
        <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
        <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
        <configuration monitorInterval="5">
            <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
        
            <!--变量配置-->
            <Properties>
                <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
                <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
                <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
                <!-- 定义日志存储的路径 -->
                <property name="FILE_PATH" value="./logs" />
                <property name="FILE_NAME" value="./log" />
            </Properties>
        
            <appenders>
        
                <console name="Console" target="SYSTEM_OUT">
                    <!--输出日志的格式-->
                    <PatternLayout pattern="${LOG_PATTERN}"/>
                    <!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                    <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
                </console>
        
                <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
                <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
                    <PatternLayout pattern="${LOG_PATTERN}"/>
                </File>
        
                <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
                <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
                    <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                    <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
                    <PatternLayout pattern="${LOG_PATTERN}"/>
                    <Policies>
                        <!--interval属性用来指定多久滚动一次,默认是1 hour-->
                        <TimeBasedTriggeringPolicy interval="24"/>
                        <SizeBasedTriggeringPolicy size="10M"/>
                    </Policies>
                    <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
                    <DefaultRolloverStrategy max="15"/>
                </RollingFile>
        
                <!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
                <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
                    <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                    <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
                    <PatternLayout pattern="${LOG_PATTERN}"/>
                    <Policies>
                        <!--interval属性用来指定多久滚动一次,默认是1 hour-->
                        <TimeBasedTriggeringPolicy interval="24"/>
                        <SizeBasedTriggeringPolicy size="10M"/>
                    </Policies>
                    <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
                    <DefaultRolloverStrategy max="15"/>
                </RollingFile>
        
                <!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
                <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
                    <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                    <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                    <PatternLayout pattern="${LOG_PATTERN}"/>
                    <Policies>
                        <!--interval属性用来指定多久滚动一次,默认是1 hour-->
                        <TimeBasedTriggeringPolicy interval="24"/>
                        <SizeBasedTriggeringPolicy size="10M"/>
                    </Policies>
                    <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
                    <DefaultRolloverStrategy max="15"/>
                </RollingFile>
        
            </appenders>
        
            <!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
            <!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效-->
            <loggers>
        
                <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
                <logger name="org.mybatis" level="info" additivity="false">
                    <AppenderRef ref="Console"/>
                </logger>
                <!--监控系统信息-->
                <!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。-->
                <Logger name="org.springframework" level="info" additivity="false">
                    <AppenderRef ref="Console"/>
                </Logger>
        
                <root level="info">
                    <appender-ref ref="Console"/>
                    <appender-ref ref="Filelog"/>
                    <appender-ref ref="RollingFileInfo"/>
                    <appender-ref ref="RollingFileWarn"/>
                    <appender-ref ref="RollingFileError"/>
                </root>
            </loggers>
            
        </configuration>
        

    Redis

    依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </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>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    # yaml配置
    spring:
      redis:
        password: password
        port: port
        host: ip
    

    注意点

    Redis 提供了两个用于操作 redis 的实例,RedisTemplate 和 StringRedisTemplate,后者主要用于操作字符串密集型数据,前者写入obj对象的时候,obj必须实现序列化接口,因为 RedisTemplate 在存储数据的时候会序列化,所以另一种解决办法是存储对象数据的时候,将数据使用JSON形式进行存储

  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/rainful/p/15230500.html
Copyright © 2020-2023  润新知