AOP的使用和事务

首先要知道什么是AOP?
AOP就是面向切面编程,分别有前置通知,后置通知,环绕通知,异常通知,最终通知。
也就是我们平常说的代理类(porxy),其他的代理类继承于InvocationHandler,创建一个Object类的属性,创建一个有参构造器,参数是Object属性,使用invoke()方法,invoke方法有两个参数,一个为属性,另一个是参数。在invoke前后可以写新的代码。
JDK使用的是invoke()其中有两个参数,Spring使用的是proceed(),不需要参数。
xml文件的编写,标签中常用的有id、class和ref三个属性,id是自己命名的,class是类的全路径,ref需要对应其他标签里的id,相当于注入。
在java中,如果想要使用一个class文件,需要加载这个文件。Class是用来做class(类)处理的工具类。那么就可以使用Class来处理想要处理的类,如果是自己写的类,很清楚里面都有什么,但是对于别人的类,并不清晰,所以需要使用Class.forName(),输入全路径,来获取该路径下类中的方法,即称为反射。
代理只是实现了接口,代理类和实现类都是为了实现接口。
切面类自己创的类和类的全路径,类中写的都是方法。
xml文件中的标签就是相当于注入。切面使用的不是标签,而是aop:config标签,
<aop:aspect ref="">ref要对应切面bean的id,中间可以写切点
<aop:pointcut expression="execution(* com.hp.service.imp..(..))" id="pointcut"/> *通配符,这个路径下的任何类,(..)是参数。id=""是切点。
<aop:before pointcut-ref="" method="">pointcut-ref就是aop:pointcut中的id,method="",就是切面标签中的类中的方法名。
DaoImp 一个实现方法,一个构造器
ServiceImp Dao属性名,一个set方法,一个实现方法,一个构造器
Controller service属性名,一个set方法,一个实现方法,一个构造器

原文地址:https://www.cnblogs.com/sanshuishui/p/13922273.html