国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java 面向切面編程(Aspect Oriented Programming,AOP)

2019-11-14 23:20:30
字體:
供稿:網(wǎng)友
java 面向切面編程(aspect Oriented PRogramming,AOP)本文內(nèi)容
  • 實(shí)例
    • 引入
    • 原始方法
    • 裝飾者模式
  • JDK 動態(tài)代理和 cglib 代理
  • 直接使用 AOP 框架——AspectWerkz

最近跳槽了,新公司使用了 AOP 相關(guān)的技術(shù),于是查點(diǎn)資料,復(fù)習(xí)一下。之前,多少知道點(diǎn),但沒怎么在實(shí)際項(xiàng)目中使用過~

下載 demo 實(shí)例
引入
package com.cap.aop;
 
public interface ICalculator {
    public double add(double num1, double num2) throws Exception;
 
    public double sub(double num1, double num2) throws Exception;
 
    public double div(double num1, double num2) throws Exception;
 
    public double mul(double num1, double num2) throws Exception;
}
package com.cap.aop;
 
/**
 * 加減乘除
 * */
public class Calculator implements ICalculator {
    @Override
    public double add(double num1, double num2) {
        double result = num1 + num2;
        return result;
    }
 
    @Override
    public double sub(double num1, double num2) {
        double result = num1 - num2;
        return result;
    }
 
    @Override
    public double div(double num1, double num2) {
        double result = num1 / num2;
        return result;
    }
 
    @Override
    public double mul(double num1, double num2) {
        double result = num1 * num2;
        return result;
    }
}

定義 ICalculator 接口和 Calculator 類,并且 Calculator 也繼承 ICalculator

若要為這個類添加“日志”功能該如何做?日志在實(shí)際項(xiàng)目中很有必要,比如數(shù)據(jù)庫日志,業(yè)務(wù)日志等等,通過日志就能知道數(shù)據(jù)庫和業(yè)務(wù)存在的問題,這要比調(diào)試程序容易多了,此外還有性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等等都是類似問題。

我們最可能想到的是,在類的每個方法內(nèi)都寫日志相關(guān)的代碼,或是在該類的基類中寫,在其子類中繼承。

原始方法
package com.cap.aop;
 
/**
 * 加減乘除,原始方式
 * */
public class CalculatorOriginalWay implements ICalculator {
    @Override
    public double add(double num1, double num2) {
        System.out.println("the method [add()]" + "begin with args (" + num1
                + "," + num2 + ")");
 
        double result = num1 + num2;
 
        System.out.println("the method [add()]" + "end with result (" + result
                + ")");
 
        return result;
    }
 
    @Override
    public double sub(double num1, double num2) {
        System.out.println("the method [sub()]" + "begin with args (" + num1
                + "," + num2 + ")");
 
        double result = num1 - num2;
 
        System.out.println("the method [sub()]" + "end with result (" + result
                + ")");
 
        return result;
    }
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 涟水县| 罗田县| 晋江市| 聊城市| 明光市| 厦门市| 方山县| 霞浦县| 孝感市| 启东市| 绥宁县| 安顺市| 孝感市| 峡江县| 汶川县| 保山市| 蚌埠市| 东光县| 尼玛县| 天门市| 七台河市| 曲阜市| 鄄城县| 华坪县| 沙河市| 察隅县| 井冈山市| 长顺县| 加查县| 大城县| 石城县| 闽清县| 方正县| 樟树市| 灌云县| 罗平县| 滦南县| 阿拉善右旗| 芦山县| 米泉市| 兴文县|