AOP 面向切面的編程,AOP可以實現“業務代碼”與“關注點代碼”分離。
一、AOP編程專業名詞:
1、Aop,aspect object programming,面向切面編程
功能: 讓關注點代碼與業務代碼分離。
2、關注點:重複代碼就叫做關注點。
3、切面:關注點形成的類,就叫切面(類)。
4、面向切面編程:就是指對很多功能都有的重複的代碼抽取,再在運行的時候往業務方法上動態植入“切面類代碼”。
5、切入點(問題:執行目標對象方法(目標對象方法有很多,執行哪些?),動態植入切面代碼)
作用:可以通過切入點表達式,指定攔截哪些類的哪些方法; 給指定的類在運行的時候植入切面類代碼。
二、手動實現AOP編程:
// 保存一個用戶
public void add(User user) {
Session session = null;
Transaction trans = null;
try {
session = HibernateSessionFactoryUtils.getSession(); // 【關注點代碼】
trans = session.beginTransaction(); // 【關注點代碼】
session.save(user); // 核心業務代碼
trans.commit(); //【關注點代碼】
} catch (Exception e) {
e.printStackTrace();
if(trans != null){
trans.rollback(); //【關注點代碼】
}
} finally{
HibernateSessionFactoryUtils.closeSession(session); //【關注點代碼】
}
}
1、手動實現AOP編程實例代碼:
2、分析總結:
1)關注點代碼,就是指重複執行的代碼。
2)業務代碼與關注點代碼分離,好處:
a)關注點代碼寫一次即可。
b)開發者只需要關注核心業務。
c)運行時期,執行核心業務代碼時候動態植入關注點代碼【代理】。
3、如何分離?
1)過程式 2)對象式
3)代理模式分離