基于AspectJ的AOP开发--XML

上回书说到注解式的操作,本文讲XML式。

XML式AOP

1:依赖包,和注解式相同。

2:准备配置文件。和注解式相同。

下面准备一个接口:

package com.imooc.aspectJ.demo2;

public interface CustomerDao {

    public void save();

    public String update();

    public void delete();

    public void findOne();

    public void findAll();

}

实现类

package com.imooc.aspectJ.demo2;

public class CustomerDaoImpl implements CustomerDao {

    @Override
    public void save() {
        System.out.println("保存客户。。。");
    }

    @Override
    public String update() {
        System.out.println("修改客户。。。");
        return "666666666";
    }

    @Override
    public void delete() {
        System.out.println("删除客户。。。");

    }

    @Override
    public void findOne() {
        System.out.println("查询一个客户。。。");

    }

    @Override
    public void findAll() {
        System.out.println("查询所有客户。。。");

    }
}

切面类:

package com.imooc.aspectJ.demo2;

import org.aspectj.lang.ProceedingJoinPoint;

public class MyAspectXml {

    //前置通知,这里方法名是随意的
    public void before(){
        System.out.println("XML前置增强=============");
    }

    //后置通知
    public void afterReturning(Object result){
        System.out.println("XML方式的后置通知============="+result);
    }

    //环绕通知,也要传入ProceedingJoinPoint的参数,用来执行目标类方法。
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕前===========");
        //此方法可以执行,也可以不执行。
        Object obj = joinPoint.proceed();
        System.out.println("环绕后===============");
        return obj;
    }

}

配置文件:

<?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: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/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--配置目标类-->
    <bean id="customerDao" class="com.imooc.aspectJ.demo2.CustomerDaoImpl"></bean>

    <!--配置切面类-->
    <bean id="myAspectXml" class="com.imooc.aspectJ.demo2.MyAspectXml"></bean>

    <!--aop配置-->
    <aop:config>
        <!--配置切入点-->
        <aop:pointcut id="pointcut1" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.save(..))"></aop:pointcut>
        <aop:pointcut id="pointcut2" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.update(..))"></aop:pointcut>
        <aop:pointcut id="pointcut3" expression="execution(* com.imooc.aspectJ.demo2.CustomerDao.delete(..))"></aop:pointcut>
        <!--指定切面类-->
        <aop:aspect ref="myAspectXml">
            <!--配置前置增强。method指定增强设置方法,point-ref指定配置好的切入点-->
            <aop:before method="before" pointcut-ref="pointcut1"></aop:before>
            <!--配置后置增强-->
            <aop:after-returning method="afterReturning" pointcut-ref="pointcut2" returning="result"></aop:after-returning>
            <!--环绕增强-->
            <aop:around method="around" pointcut-ref="pointcut3"></aop:around>
        </aop:aspect>

    </aop:config>

</beans>

既然是XML配置进行AOP开发,配置文件当然是重头戏。不过主要的步骤也就三个:

1:配置目标类,无需多言。

2:配置切面类,这个也不用多说。

3:重要的是指定aop配置:<aop:config>具体内容见上面代码。

具体分析来说,XML方式和注解式的内容有很多相通之处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值