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)代理模式分离