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

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í)有所幫助,也希望大家多多支持腳本之家。

  • mybatis?一對(duì)多映射?column屬性的注意事項(xiàng)說(shuō)明

    mybatis?一對(duì)多映射?column屬性的注意事項(xiàng)說(shuō)明

    這篇文章主要介紹了mybatis?一對(duì)多映射?column屬性的注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • java如何實(shí)現(xiàn)圖片轉(zhuǎn)化為數(shù)據(jù)流

    java如何實(shí)現(xiàn)圖片轉(zhuǎn)化為數(shù)據(jù)流

    這篇文章主要介紹了java如何實(shí)現(xiàn)圖片轉(zhuǎn)化為數(shù)據(jù)流,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 討論分析JDK17是否會(huì)代替JDK8

    討論分析JDK17是否會(huì)代替JDK8

    這篇文章主要為大家介紹了JDK17是否會(huì)代替JDK8的問(wèn)題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • scala當(dāng)中的文件操作和網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法

    scala當(dāng)中的文件操作和網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法

    這篇文章主要介紹了scala當(dāng)中的文件操作和網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)的示例代碼

    Java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)的示例代碼

    泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。本文將利用泛型實(shí)現(xiàn)簡(jiǎn)單的棧結(jié)構(gòu),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • java批量解析微信dat文件

    java批量解析微信dat文件

    這篇文章主要為大家詳細(xì)介紹了java批量解析微信dat文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • jconsole使用介紹(圖文)

    jconsole使用介紹(圖文)

    大家在學(xué)習(xí)java的時(shí)候,難免會(huì)對(duì)jvm進(jìn)行一些深入的了解。推薦大家使用jdk下面的jconsole.exe來(lái)輔助理解jvm的一些概念
    2015-12-12
  • idea2020最新版配置maven的方法

    idea2020最新版配置maven的方法

    這篇文章主要介紹了idea2020最新版配置maven的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java消息隊(duì)列RabbitMQ之消息回調(diào)詳解

    Java消息隊(duì)列RabbitMQ之消息回調(diào)詳解

    這篇文章主要介紹了Java消息隊(duì)列RabbitMQ之消息回調(diào)詳解,消息回調(diào),其實(shí)就是消息確認(rèn)(生產(chǎn)者推送消息成功,消費(fèi)者接收消息成功)  , 對(duì)于程序來(lái)說(shuō),發(fā)送者沒法確認(rèn)是否發(fā)送成功,需要的朋友可以參考下
    2023-07-07
  • 最新評(píng)論