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

在上一篇文章https://blog.csdn.net/wyf2017/article/details/81239476中我们简单的介绍了下通过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>

运行结果如下

扫描二维码关注公众号,回复: 2441350 查看本文章

猜你喜欢

转载自blog.csdn.net/wyf2017/article/details/81258471