工作流程
1、Spring容器启动
2、读取所有切面配置中的切入点
3、初始化bean,判定bean对应的类中的方法是否匹配到任意切入点
-
匹配失败,创建对象
-
匹配成功,创建原始对象(目标对象)的代理对象
4、获取bean的执行方法
-
获取bean,调用方法并执行,完成操作
-
获取的bean是代理对象时,根据代理对象的运行模式运行原始方法与增强的内容,完成操作
目标对象:原始功能去掉共性功能对应类产生的对象,这种对象是无法直接完成最终工作的
代理对象:目标对象无法直接完成工作,需要对其功能进行回填,通过原始对象的代理对象实现
切入点表达式
-
切入点:要进行增强的方法
-
切入点表达式:要进行增强方法的描述方式
描述方式一:执行com.itheima.dao包下的BookDao接口中的无参数updata方法
execution(void com.itheima.dao.BookDao.updata())
描述方式二:执行com.itheima.dao.impl包下的BookDaoImpl类中的无参数updata方法
execution(void com.itheima.dao.impl.BookDaoImpl.updata())