spring aop的xml配置详解

在Spring配置文件中,所以AOP相关定义必须放在<aop:config>标签下,
该标签下可以有<aop:pointcut><aop:advisor><aop:aspect>标签,配置顺序不可变。

<aop:pointcut>:用来定义切入点,该切入点可以重用;
<aop:advisor>:用来定义只有一个通知和一个切入点的切面;
<aop:aspect>:用来定义切面,该切面可以包含多个切入点和通知,而且标签内部的通知和切入点定义是无序的;和advisor的区别就在此,advisor只包含一个通知和一个切入点。

下面的例子是转载别人的,我在这里只是方便我自己学习和使用,添加一些说明。

MyAspect.java

package com.demo.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

public class MyAspect {

    public void before(JoinPoint jp) {
        System.out.println("被代理方法名字:"+jp.getSignature().getName());
        System.out.println("被代理方法参数:"+jp.getArgs());
        System.out.println("被代理对象:"+jp.getTarget());
        System.out.println("现在调用的是权限验证");

      }


      public  void log(JoinPoint jp,Object rvt){
        System.out.println("被代理方法名字:"+jp.getSignature().getName());
        System.out.println("被代理方法参数:"+jp.getArgs());
        System.out.println("被代理对象:"+jp.getTarget());
        System.out.println("被代理对象的返回值"+rvt);
        System.out.println("现在调用的是日志管理");
      }


      public void around(ProceedingJoinPoint joinpoint){
            try{
                System.out.println("begin!");
                long start = System.currentTimeMillis();

                joinpoint.proceed();//Proceed with the next advice or target method invocation

                long end = System.currentTimeMillis();
                System.out.println("end!        performance took "+(end-start)+" milliseconds");
            }catch(Throwable e){
                System.out.println("eee!We want our money back!");
            }
        }


      public void after(){
        System.out.println("资源已经被释放!");     
      }
}

UserDao.java

@Component
public class UserDao {

     public String save(String name){
            System.out.println(name+"被保存");
            return "success";
        }
}

Test.java

public class Test {

    public static void main(String[] args) {
          ApplicationContext context=new ClassPathXmlApplicationContext("application.xml");
          UserDao  userDao=(UserDao) context.getBean("userDao");
             userDao.save("csdnccccccc");
           }
}

application.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:aop="http://www.springframework.org/schema/aop"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  http://www.springframework.org/schema/aop 
  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  <!-- 切面 -->
  <bean id="myAspect" class="com.demo.aop.MyAspect"></bean>
  <bean id="userDao" class="com.demo.aop.UserDao"></bean>

  <!-- 切入点 -->
  <aop:config>
    <aop:aspect id="asp1" ref="myAspect">
      <aop:before method="authority" pointcut="execution(* com.demo.aop.UserDao.save(..))" />
      <aop:after method="release" pointcut="execution(* com.demo.aop.UserDao.save(..))" />
      <aop:after-returning method="log"
        pointcut="execution(* com.demo.aop.UserDao.save(..))" returning="rvt" />
      <aop:around method="watchPerformance" pointcut="execution(* com.demo.aop.UserDao.save(..))" />
    </aop:aspect>
  </aop:config>
</beans>

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值