zoukankan      html  css  js  c++  java
  • spring3: Aspectj后置返回通知

    Aspectj后置返回通知

    接口:

    package chapter1.server;
    
    public interface IHelloService2 {
    	public int sayAfterReturning(String param);
    }
    

      

    接口实现

    package chapter1.service.impl;
    
    import chapter1.server.IHelloService2;
    
    public class HelloService2 implements IHelloService2 {
    
    	public int sayAfterReturning(String param) {
    		// TODO Auto-generated method stub
    		System.out.println("============ say after returning:" + param);
    		return 1;
    	}
    
    }
    

      

    配置:

    一定要加:<aop:aspectj-autoproxy/> 启动对Aspectj的支持

    <aop:aspectj-autoproxy/>
    <bean id="helloService" class="chapter1.service.impl.HelloService2" />
    <bean id="aspect" class="chapter1.aop.HelloAspect2"/>
    

      

    AOP切面:

    一定要引入:org.aspectj.lang.annotation.Aspect; 否则不执行

    package chapter1.aop;
    
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Pointcut;
    import org.aspectj.lang.annotation.AfterReturning;
    
    @Aspect
    public class HelloAspect2 {
    
    	
    	
    	//方法一
    	//通知
    	@AfterReturning(	
    			//value="execution(* chapter1..*.sayAdvisorBefore(java.lang.String)) and args(param)",
    			value="execution(* chapter1..*.sayAfterReturning(..))",			
    			argNames="retVal", 
    			returning="retVal")
    	public void afterReturningAdvice(Object retVal)
    	{
    		System.out.println("================= return after advice : " + retVal);
    	}
    	
    	
    	//方法二
    	//定义切入点
    	@Pointcut(value="execution(* chapter1..*.sayAfterReturning(java.lang.String) and args(param))", argNames="param")
    	public void returnPointcut(String param) {}
    	
    	public void afterReturningAdvice2(Object retVal)
    	{
    		
    	}
    	
    }
    

      

    测试程序:

    @Test
    	public void testAspectAfterReturning()
    	{
    		ApplicationContext context = new ClassPathXmlApplicationContext("chapter1/aspectj2.xml");
    		IHelloService2 hello = context.getBean("helloService", IHelloService2.class);
    		hello.sayAfterReturning("hahah");
    	}
    

      

    结果:

    ============ say after returning:hahah
    ================= return after advice : 1

  • 相关阅读:
    在 idea 下搭建的第一个MyBatis项目及增删改查用法
    解决idea中Tomcat服务器日志乱码及控制台输出乱码
    idea 设置自动生成方法的快捷键 类似于main() 方法
    windows下Tomcat根据日期生成日志catalina.out
    springmvc <from:from>标签的使用
    Spring+Quartz集群环境搭建
    Quartz整合Spring
    Quartz 基本编码
    java中 线程池和 callable 创建线程的使用
    SpringSecurity权限管理框架--基于springBoot实现授权功能
  • 原文地址:https://www.cnblogs.com/achengmu/p/8574911.html
Copyright © 2011-2022 走看看