在上一篇文章中我们简单的介绍了下通过Aspectj实现AOP主要是在类里面通过注解来实现的,接下来我们这一篇文章介绍下周末在xml里面来实现

首先我们将之前在类里面写的那些注解统统删除,如下所示

package com.Demo6;



public class UserDao implements IUserDao {
@Override
public void save() {
System.out.println("-----------开启连接-----------");
// int i = 1/0;
}
}
package com.Demo6;

public interface IUserDao {
public void save();
}
package com.Demo6;


public class OrderDao {
public void save() {
System.out.println("..............完成修改..............");
}
}
package com.Demo6;

import org.aspectj.lang.ProceedingJoinPoint;



public class MyAop {


public void beginTran(){
System.out.println("...............开启事务");
}

public void commite(){
System.out.println("...............提交事务");
}

public void afterReturn(){
System.out.println("------------使用的是AfterReturning-------------");
}

public void afterThrow(){
System.out.println("------------使用的是AfterThrowing-------------");
}

public void arround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println("------------begin------------");
//开启核心事务,proceed()相当于我们的核心方法save()
proceedingJoinPoint.proceed();
System.out.println("------------end------------");
}
}
package com.Demo6;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Test4 {
public static void main(String []args){
ApplicationContext ap = new ClassPathXmlApplicationContext("bean2.xml");
IUserDao proxy = (IUserDao) ap.getBean("userDao");
proxy.save();
OrderDao orderDao = (OrderDao) ap.getBean("orderDao");
orderDao.save();
}
}

接下来就是重点在xml里面来配置相应的属性

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

<bean id="userDao" class="com.Demo6.UserDao"></bean>
<bean id="orderDao" class="com.Demo6.OrderDao"></bean>
<!--创建切面类-->
<bean id="aop" class="com.Demo6.MyAop"></bean>
<!--切入点-->
<aop:config>
<aop:pointcut id="pt" expression="execution(* * .* ())"></aop:pointcut>
<aop:aspect ref="aop">
<aop:before method="beginTran" pointcut-ref="pt"></aop:before>
<aop:after method="commite" pointcut-ref="pt"></aop:after>
<aop:after-returning method="afterReturn" pointcut-ref="pt"></aop:after-returning>
<aop:after-throwing method="afterThrow" pointcut-ref="pt"></aop:after-throwing>
<aop:around method="arround" pointcut-ref="pt"></aop:around>
</aop:aspect>
</aop:config>

</beans>

运行结果如下

使用Aspectj实现AOP--------------通过XML注解配置_spring