欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot Logback日志多文件輸出方式(按日期和大小分割)

 更新時(shí)間:2024年05月20日 15:24:08   作者:boonya  
這篇文章主要介紹了Springboot Logback日志多文件輸出方式(按日期和大小分割),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在早期的日志Slf4j+Log4j使用方式中,我們使用最多的就是LoggerFactory來(lái)獲取一個(gè)Logger實(shí)例,logback的原理也一樣。

本文示例文件分割按照日志大小和日期進(jìn)行分割。

配置logback.xml

配置需要的propery屬性

這部分可以配置到logback.properties 需要開啟掃描才行,下面是直接在logback.xml配置

 <!--設(shè)置日志目錄-->
    <property name="LOG_HOME" value="./applog"/>
    <!--這里需要將value改成項(xiàng)目名稱-->
    <property name="LOG_NAME" value="patrol-mobile-service"/>

配置日志追加方式

配置appender標(biāo)簽包括文件生成規(guī)則,內(nèi)容的輸出規(guī)則等

  <!--控制臺(tái)日志格式-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
         
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>

配置日志級(jí)別

注意:日志級(jí)別不區(qū)分大小寫

  <!--默認(rèn)日志級(jí)別,大小寫無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF-->
    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>

配置日志模板

logger的配置就是LoggerFactory需要的模板,只有配置了工廠獲取才會(huì)生效。

  <!--業(yè)務(wù)操作日志-->
    <logger name="POSITION_LOG" level="info" additivity="false">
        <appender-ref ref="POSITION_LOG_APPENDER"/>
    </logger>
    <logger name="EVENT_LOG" level="info" additivity="false">
        <appender-ref ref="EVENT_LOG_APPENDER"/>
    </logger>
    <logger name="TRACK_LOG" level="info" additivity="false">
        <appender-ref ref="TRACK_LOG_APPENDER"/>
    </logger>
    <logger name="FILE_LOG" level="info" additivity="false">
        <appender-ref ref="FILE_LOG_APPENDER"/>
    </logger>
    <logger name="RESTART_LOG" level="info" additivity="false">
        <appender-ref ref="RESTART_LOG_APPENDER"/>
    </logger>

logback 多日志文件操作

logback 官方按大小和時(shí)間分隔規(guī)則

http://logback.qos.ch/manual/appenders.html

<configuration>
  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
       <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
       <maxFileSize>100MB</maxFileSize>    
       <maxHistory>60</maxHistory>
       <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>
 
 
  <root level="DEBUG">
    <appender-ref ref="ROLLING" />
  </root>
 
</configuration>

日志未按照大小刪除和控制文件總大小

參考官方說(shuō)明:http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy

需要配置:cleanHistoryOnStart標(biāo)簽值為true默認(rèn)是false.

<!-- 文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>

logback完整示例配置

根據(jù)前面介紹的一個(gè)完整配置示例

<configuration>
    <!--設(shè)置日志目錄-->
    <property name="LOG_HOME" value="./applog"/>
    <!--這里需要將value改成項(xiàng)目名稱-->
    <property name="LOG_NAME" value="patrol-mobile-service"/>
    <!--控制臺(tái)日志格式-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
    <!-- 文件日志策略:每天生成多個(gè)日志文件-->
    <!-- <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${LOG_HOME}/${LOG_NAME}.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">      
             <fileNamePattern>${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>  
             <minIndex>1</minIndex>
             <maxIndex>1000</maxIndex>
         </rollingPolicy>
         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">       
             <maxFileSize>100MB</maxFileSize>  
         </triggeringPolicy>  
         <encoder>    
             <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>  
         </encoder>
     </appender>-->
 
    <!-- 【實(shí)時(shí)位置同步】文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="POSITION_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}-position-sync.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--僅輸出INFO日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 接收INFO級(jí)別和高于INFO級(jí)別的日志-->
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
 
    <!-- 【用戶事件同步】文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="EVENT_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}-event-sync.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--僅輸出INFO日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 接收INFO級(jí)別和高于INFO級(jí)別的日志-->
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
 
    <!-- 【用戶軌跡同步】件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="TRACK_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}-track-sync.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--僅輸出INFO日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 接收INFO級(jí)別和高于INFO級(jí)別的日志-->
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
 
    <!-- 【事件附件同步】文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="FILE_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}-file-sync.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--僅輸出INFO日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 接收INFO級(jí)別和高于INFO級(jí)別的日志-->
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
 
    <!-- 【系統(tǒng)重啟服務(wù)】文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="RESTART_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}-restart.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--僅輸出INFO日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 接收INFO級(jí)別和高于INFO級(jí)別的日志-->
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
 
    <!-- 【REDIS服務(wù)】文件日志策略:每天生成一個(gè)日志文件,保存30天的日志文件-->
    <appender name="REDIS_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}-redis.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--僅輸出INFO日志-->
        <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 接收INFO級(jí)別和高于INFO級(jí)別的日志-->
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n</pattern> 
        </encoder>
    </appender>
 
    <!--默認(rèn)日志級(jí)別,大小寫無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF-->
    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
    <!--特定日志級(jí)別,其中xxx為項(xiàng)目名稱-->
    <logger name="com.patrol.mobile.controller" level="info" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
 
    <!--業(yè)務(wù)操作日志-->
    <logger name="POSITION_LOG" level="info" additivity="false">
        <appender-ref ref="POSITION_LOG_APPENDER"/>
    </logger>
    <logger name="EVENT_LOG" level="info" additivity="false">
        <appender-ref ref="EVENT_LOG_APPENDER"/>
    </logger>
    <logger name="TRACK_LOG" level="info" additivity="false">
        <appender-ref ref="TRACK_LOG_APPENDER"/>
    </logger>
    <logger name="FILE_LOG" level="info" additivity="false">
        <appender-ref ref="FILE_LOG_APPENDER"/>
    </logger>
    <logger name="RESTART_LOG" level="info" additivity="false">
        <appender-ref ref="RESTART_LOG_APPENDER"/>
    </logger>
    <logger name="REDIS_LOG" level="info" additivity="false">
        <appender-ref ref="REDIS_LOG_APPENDER"/>
    </logger>
</configuration>

Java日志工具類

日志枚舉根據(jù)自己項(xiàng)目的需要進(jìn)行自定義即可。

package com.patrol.beans.util;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * @Copyright: 2019-2021
 * @FileName: LoggerUtils.java
 * @Author: PJL
 * @Date: 2020/9/8 10:34
 * @Description: 日志管理工具
 */
public class LoggerUtils {
 
    /**
     * 打印到指定的文件下
     *
     * @param patrolLoggerType 日志文件類型
     * @return
     */
    public static Logger getLogger(PatrolLoggerType patrolLoggerType) {
        return LoggerFactory.getLogger(patrolLoggerType.getLogFileName());
    }
 
    /**
     * @Copyright: 2019-2021
     * @FileName: PatrolLoggerType.java
     * @Author: PJL
     * @Date: 2020/9/8 10:10
     * @Description: 巡護(hù)日志類型枚舉
     */
    public enum PatrolLoggerType {
        /**
         * 重啟日志
         */
        RESTART("RESTART_LOG"),
        /**
         * 實(shí)時(shí)位置
         */
        POSITION("POSITION_LOG"),
        /**
         * 用戶事件
         */
        EVENT("EVENT_LOG"),
        /**
         * 用戶軌跡
         */
        TRACK("TRACK_LOG"),
        /**
         * 事件附件
         */
        FILE("FILE_LOG");
 
        private String logFileName;
 
        PatrolLoggerType(String fileName) {
            this.logFileName = fileName;
        }
 
        public String getLogFileName() {
            return logFileName;
        }
 
 
    }
}

系統(tǒng)啟動(dòng)日志示例

在Application啟動(dòng)類調(diào)用日志輸出。

package com.patrol.mobile;
 
import com.patrol.beans.util.LoggerUtils;
import org.slf4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
import javax.annotation.PostConstruct;
 
/**
 * 開啟異步請(qǐng)求
 */
@EnableAsync
/**
 * 開啟接口緩存
 */
@EnableCaching
/**
 * 開啟定時(shí)任務(wù)調(diào)度
 */
@EnableScheduling
/**
 * 開啟接口文檔描述
 */
@EnableSwagger2
/**
 * @SpringBootApplication
 * <p>相當(dāng)于@Configuration,@EnableAutoConfiguration和 @ComponentScan </p>
 */
@SpringBootApplication
public class PatrolMobileServiceApplication {
    /**
     * 系統(tǒng)重啟日志輸出(指定日志文件輸出)
     */
    @PostConstruct
    public void printLog() {
        Logger logger = LoggerUtils.getLogger(LoggerUtils.PatrolLoggerType.RESTART);
        logger.info(">>>系統(tǒng)重啟!");
    }
 
    public static void main(String[] args) {
        SpringApplication.run(PatrolMobileServiceApplication.class, args);
    }
 
}

示例效果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Data JPA 如何使用QueryDsl查詢并分頁(yè)

    Spring Data JPA 如何使用QueryDsl查詢并分頁(yè)

    這篇文章主要介紹了Spring Data JPA 如何使用QueryDsl查詢并分頁(yè),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot創(chuàng)建maven多模塊項(xiàng)目實(shí)戰(zhàn)代碼

    SpringBoot創(chuàng)建maven多模塊項(xiàng)目實(shí)戰(zhàn)代碼

    本篇文章主要介紹了SpringBoot創(chuàng)建maven多模塊項(xiàng)目實(shí)戰(zhàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java編程中正則表達(dá)式的用法總結(jié)

    Java編程中正則表達(dá)式的用法總結(jié)

    這篇文章主要介紹了Java編程中正則表達(dá)式的用法總結(jié),正則表達(dá)式是一種強(qiáng)大的字符串處理工具,Java對(duì)正則表達(dá)式的支持還是很不錯(cuò)的,我們先來(lái)整理一下正則表達(dá)式的一些基礎(chǔ)知識(shí):
    2016-05-05
  • Hibernate的Session_flush與隔離級(jí)別代碼詳解

    Hibernate的Session_flush與隔離級(jí)別代碼詳解

    這篇文章主要介紹了Hibernate的Session_flush與隔離級(jí)別代碼詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • TF-IDF理解及其Java實(shí)現(xiàn)代碼實(shí)例

    TF-IDF理解及其Java實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了TF-IDF理解及其Java實(shí)現(xiàn)代碼實(shí)例,簡(jiǎn)單介紹了tfidf算法及其相應(yīng)公式,然后分享了Java實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Spring IOC簡(jiǎn)單理解及創(chuàng)建對(duì)象的方式

    Spring IOC簡(jiǎn)單理解及創(chuàng)建對(duì)象的方式

    這篇文章主要介紹了Spring IOC簡(jiǎn)單理解及創(chuàng)建對(duì)象的方式,本文通過(guò)兩種方式給大家介紹創(chuàng)建對(duì)象的方法,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Java使用JDK與Cglib動(dòng)態(tài)代理技術(shù)統(tǒng)一管理日志記錄

    Java使用JDK與Cglib動(dòng)態(tài)代理技術(shù)統(tǒng)一管理日志記錄

    這篇文章主要介紹了Java使用JDK與Cglib動(dòng)態(tài)代理技術(shù)統(tǒng)一管理日志記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Spring Boot 事務(wù)示例詳解

    Spring Boot 事務(wù)示例詳解

    Spring Boot 提供了強(qiáng)大的事務(wù)管理功能,通過(guò) @Transactional 注解可以方便地配置事務(wù)的傳播行為和屬性,理解和合理應(yīng)用這些配置,可以有效地提高應(yīng)用程序的數(shù)據(jù)一致性和完整性,本文介紹Spring Boot 事務(wù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-04-04
  • Java中的this指針使用方法分享

    Java中的this指針使用方法分享

    我知道很多朋友都和我一樣:在JAVA程序中似乎經(jīng)常見到“this”,自己也偶爾用到它,但是到底“this”該怎么用,卻心中無(wú)數(shù)!很多人一提起它,就說(shuō)“當(dāng)前對(duì)象”,可到底什么是當(dāng)前對(duì)象,是什么當(dāng)前對(duì)象,他自己也不清楚。
    2014-06-06
  • HandlerMapping之RequestMappingHandlerMapping作用詳解

    HandlerMapping之RequestMappingHandlerMapping作用詳解

    這篇文章主要介紹了HandlerMapping之RequestMappingHandlerMapping作用詳解,HandlerMapping是用來(lái)尋找Handler的,并不與Handler的類型或者實(shí)現(xiàn)綁定,而是根據(jù)需要定義的,那么為什么要單獨(dú)給@RequestMapping實(shí)現(xiàn)一個(gè)HandlerMapping,需要的朋友可以參考下
    2023-10-10

最新評(píng)論