Spring AOP運用介紹

2021-08-22 17:18:33 字數 1438 閱讀 7533

aop作為spring這個輕量級的容器中很重要的一部分,得到越來越多的關注,spring的transaction就是用aop來管理的,今天就通過簡單的例子來看看spring中的aop的基本使用方法。

首先確定將要proxy的目標,在spring中預設採用jdk中的dynamic proxy,它只能夠實現介面的**,如果想對類進行**的話,需要採用cglib的proxy。顯然,選擇「程式設計到介面」是更明智的做法,下面是將要**的介面:

public inte***ce foointe***ce

以及其乙個簡單的實現:

public class fooimpl implements foointe***ce

public void dummyfoo()

}接下來建立乙個advice,在spring中支援around,before,after returning和throws四種advice,這裡就以簡單的before advice舉例:

public class printbeforeadvice implements methodbeforeadvice

}有了自己的business inte***ce和advice,剩下的就是如何去裝配它們了,首先利用proxyfactory以程式設計方式實現,如下:

public class aoptestmain

}現在執行程式,神奇的結果就出現了:

in printbeforeadvice

in fooimpl.printfoo

in printbeforeadvice

in fooimpl.dummyfoo

<?xml version="1.0" encoding="utf-8"?>

foointe***ce

myadvice

當然,main中的**也要進行相應的修改:

public static void main(string args)

現在執行一下,結果將和上面的執行結果完全一樣,這樣是不是更優雅?當需要更改實現時,只需要修改配置檔案就可以了,程式中的**不需任何改動。

<?xml version="1.0" encoding="utf-8"?>

.*print.*

foointe***ce

myadvisor

主程式不需進行任何修改,執行結果已經變樣了:

in printbeforeadvice

in fooimpl.printfoo

in fooimpl.dummyfoo

<?xml version="1.0" encoding="utf-8"?>

/web-inf/jdbc.properties$$

$$$propagation_required,readonly

propagation_required,readonly

嗯,要想徹底理解spring的aop,最好還是多看看原始碼,開源就是好啊!

spring aop和ioc運用場景

1 ioc運用場景 configuration的註解類標識這個類可以使用spring ioc容器作為bean定義的 bean註解告訴spring,乙個帶有 bean的註解方法將返回乙個物件,該物件應該被註冊為在spring應用程式上下文中的bean。configuration public clas...

spring aop 詳細介紹 方法增強

介紹 利用 spring 對方法實現增強 1.定義乙個需要增強的介面 package com.dl.code.service created with intellij idea.日期 2021 2 24 描述 spring練習 這裡面的四個方法 是等待增強的方法 public inte ce us...

4 angular框架介紹 運用

核心 只關心資料,完全不關心ui 的事 是ng 自己的一套解析程式,不完全和js 一樣 ng 和 js 表示式 不 互通 ng 變數 都是 scope 的一部分 資料初始化 ng init 名字 值 名字 值 直接寫 class 陣列 ng class arr class1 style ng ini...