最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring動(dòng)態(tài)代理實(shí)現(xiàn)日志功能詳解

 更新時(shí)間:2021年08月17日 11:02:52   作者:haijiao12138  
這篇文章主要為大家詳細(xì)介紹了Spring動(dòng)態(tài)代理實(shí)現(xiàn)日志功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

代理模式(Proxy)是通過(guò)代理對(duì)象訪問(wèn)目標(biāo)對(duì)象,這樣可以在目標(biāo)對(duì)象基礎(chǔ)上增強(qiáng)額外的功能,如添加權(quán)限,訪問(wèn)控制和審計(jì)等功能。

1.自定義業(yè)務(wù)接口

package com.haijiao12138.demo.spring.agentLog0815;
 
/**
 * @author: haijiao12138
 * @ClassName: BusinessClassService
 * @description: TODO
 * @date: 2021/8/15 14:33
 */
public interface BusinessClassService {
 
    public void doSomeThing();//自定義接口
 
}

2.自定義業(yè)務(wù)接口實(shí)現(xiàn)類

package com.haijiao12138.demo.spring.agentLog0815;
 
/**
 * @author: haijiao12138
 * @ClassName: BusinessClassServiceImpl
 * @description: 業(yè)務(wù)類
 * @date: 2021/8/15 14:34
 */
public class BusinessClassServiceImpl implements BusinessClassService {
 
    //執(zhí)行某事
    @Override
    public void doSomeThing() {
        System.out.println("doing  somthing......");
    }
}

3.日志接口和實(shí)現(xiàn)類

package com.haijiao12138.demo.spring.agentLog0815;
 
import java.lang.reflect.Method;
 
/**
 * @author: haijiao12138
 * @ClassName: MyLogger
 * @description:日志類接口
 * @date: 2021/8/15 14:38
 */
public interface MyLogger {
 
    //記錄進(jìn)入方法時(shí)間
    public void saveIntoMethodTime(Method method);
 
    //記錄退出方法的時(shí)間
    public void saveOutMethodTime(Method method);
}
package com.haijiao12138.demo.spring.agentLog0815;
 
import java.lang.reflect.Method;
import java.util.Date;
 
/**
 * @author: haijiao12138
 * @ClassName: MyLoggerImpl
 * @description: TODO  日志實(shí)現(xiàn)類
 * @date: 2021/8/15 14:40
 */
public class MyLoggerImpl  implements MyLogger{
    @Override
    public void saveIntoMethodTime(Method method) {
        System.out.println("進(jìn)入" + method.getName()  +"方法時(shí)間為: " + new Date());
    }
 
    @Override
    public void saveOutMethodTime(Method method) {
        System.out.println("退出" + method.getName() + "方法時(shí)間為:" + new Date());
    }
}

4.下面是日志類的handler實(shí)現(xiàn):

package com.haijiao12138.demo.spring.agentLog0815;
 
import java.lang.reflect.Method;
import java.util.Date;
 
/**
 * @author: haijiao12138
 * @ClassName: MyLoggerImpl
 * @description: TODO  日志實(shí)現(xiàn)類
 * @date: 2021/8/15 14:40
 */
public class MyLoggerImpl  implements MyLogger{
    @Override
    public void saveIntoMethodTime(Method method) {
        System.out.println("進(jìn)入" + method.getName()  +"方法時(shí)間為: " + new Date());
    }
 
    @Override
    public void saveOutMethodTime(Method method) {
        System.out.println("退出" + method.getName() + "方法時(shí)間為:" + new Date());
    }
}

5.測(cè)試類

package com.haijiao12138.demo.spring.agentLog0815;
 
import java.lang.reflect.Proxy;
 
/**
 * @author: haijiao12138
 * @ClassName: MyLoggerTest
 * @description: TODO 日志測(cè)試類
 * @date: 2021/8/15 14:43
 */
public class MyLoggerTest {
    public static void main(String[] args) {
        /** 實(shí)例化真實(shí)項(xiàng)目中業(yè)務(wù)類 **/
        BusinessClassService businessClassService = new BusinessClassServiceImpl();
        /** 日志類的handler **/
        MyLoggerHandler myLoggerHandler = new MyLoggerHandler(businessClassService);
        /** 獲得代理類對(duì)象 **/
        BusinessClassService businessClass = (BusinessClassService) Proxy.newProxyInstance(businessClassService.getClass().getClassLoader(), businessClassService.getClass().getInterfaces(),myLoggerHandler);
        /** 執(zhí)行代理類方法 **/
        businessClass.doSomeThing();
 
    }
 
}

結(jié)果輸出:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 將Sublime Text 2配置為Java的IDE的教程

    將Sublime Text 2配置為Java的IDE的教程

    這篇文章主要介紹了將Sublime Text 2配置為Java的IDE的教程,包括能讓Sublime這個(gè)文本編輯器編譯和運(yùn)行Java程序等,需要的朋友可以參考下
    2015-07-07
  • Hibernate的Session_flush與隔離級(jí)別代碼詳解

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

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

    java LRU算法介紹與用法示例

    這篇文章主要介紹了java LRU算法,簡(jiǎn)單介紹了LRU算法的概念并結(jié)合實(shí)例形式分析了LRU算法的具體使用方法,需要的朋友可以參考下
    2017-09-09
  • Java類和成員上的一些方法實(shí)例代碼

    Java類和成員上的一些方法實(shí)例代碼

    這篇文章主要介紹了Java類和成員上的一些方法實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • java實(shí)現(xiàn)檢測(cè)是否字符串中包含中文

    java實(shí)現(xiàn)檢測(cè)是否字符串中包含中文

    本文給大家分享了2個(gè)使用java檢測(cè)字符串中是否包含中文的代碼,都非常的實(shí)用,最后附上了各種字符的unicode編碼的范圍,方便我們以后使用正則進(jìn)行匹配檢測(cè)。
    2015-10-10
  • Java基礎(chǔ)之包裝類

    Java基礎(chǔ)之包裝類

    這篇文章主要介紹了Java基礎(chǔ)之包裝類,文中有非常詳細(xì)的代碼示例及基礎(chǔ)知識(shí)詳解,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很大的幫助喲,需要的朋友可以參考下
    2021-05-05
  • Mybatis框架中Interceptor接口的使用說(shuō)明

    Mybatis框架中Interceptor接口的使用說(shuō)明

    這篇文章主要介紹了Mybatis框架中Interceptor接口的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java實(shí)現(xiàn)獲取cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)等信息的方法示例

    Java實(shí)現(xiàn)獲取cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)等信息的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)獲取cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)等信息的方法,涉及java使用第三方j(luò)ar包針對(duì)本機(jī)硬件的cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)信息等的讀取相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Java?Springboot異步執(zhí)行事件監(jiān)聽(tīng)和處理實(shí)例

    Java?Springboot異步執(zhí)行事件監(jiān)聽(tīng)和處理實(shí)例

    Java?SpringBoot中,監(jiān)聽(tīng)和處理事件是一種常見(jiàn)的模式,它允許不同的組件之間通過(guò)事件進(jìn)行通信,事件監(jiān)聽(tīng)和處理通常通過(guò)Spring的事件發(fā)布-訂閱模型來(lái)實(shí)現(xiàn),一個(gè)簡(jiǎn)單的Spring?Boot應(yīng)用程序示例,其中將包括事件的定義、事件的發(fā)布以及事件的監(jiān)聽(tīng)
    2024-07-07
  • 深入解析Andoird應(yīng)用開(kāi)發(fā)中View的事件傳遞

    深入解析Andoird應(yīng)用開(kāi)發(fā)中View的事件傳遞

    這篇文章主要介紹了深入解析Andoird應(yīng)用開(kāi)發(fā)中View的事件傳遞,其中重點(diǎn)講解了ViewGroup的事件傳遞流程,需要的朋友可以參考下
    2016-02-02

最新評(píng)論

赤水市| 河西区| 定州市| 沈丘县| 平顺县| 沭阳县| 百色市| 加查县| 彭泽县| 雷山县| 离岛区| 边坝县| 东城区| 吐鲁番市| 弋阳县| 桑植县| 慈利县| 樟树市| 唐河县| 崇州市| 灵台县| 石阡县| 伊川县| 徐水县| 巴中市| 河南省| 南昌市| 邳州市| 彭山县| 信丰县| 宣城市| 安西县| 龙井市| 二手房| 资溪县| 昌宁县| 呼图壁县| 南丰县| 万盛区| 霸州市| 兰溪市|