什么是AOP?
面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面
1.面向切面编程提供声明式事务管理
2.spring支持用户自定义的切面
面向切面编程(aop)是对面向对象编程(oop)的补充,
面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。
AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象,
是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。
aop框架具有的两个特征:
1.各个步骤之间的良好隔离性
2.源代码无关性
前提:要实现AOP的模拟就要知道动态代理,Spring中使用了两种动态代理方式,一种是基于JDK的动态代理,一种是基于CGlib的动态代理。为什么会有两种,那是因为JDK的动态代理只能是
针对接口。
先看下面的代码dao层
Java代码
1. package com.lbx.dao;
2.
3. import com.lbx.model.User;
4.
5. public interface UserDAO {
6. public void save(User user);
7. //public void delete();
8. }
dao实现层
Java代码
1. package com.lbx.dao.impl;
2.
3. import com.lbx.dao.UserDAO;
4. import com.lbx.model.User;
5.
6. public class UserDAOImpl implements UserDAO {
7.
8. @Override
9. public void save(User user) {
10.
11. System.out.println("a user saved!!!");
12.
13. }
14.
15. /*public void delete(){