spring AOP实现――annotation方法

  spring的AOP需要导入的特殊包(当然其他的spring的基础包是必须的

     aopalliance.jar

     aspectjrt.jar                  

     aspectjweaver.jar

   

  1.Hello.java 接口

package com.xj.bean.aop;

public interface Hello {
   public void addHello();   //添加方法
   
   public void deleteHello();  //删除方法
   
   public void findHello();
}

 

2.HelloImpl.java

package com.xj.bean.aop;
public class HelloImpl implements Hello{

	@Override
	public void addHello() {
		System.out.println("add");
	}

	@Override
	public void deleteHello() {
		System.out.println("delete");
	}

	@Override
	public void findHello() {
		System.out.println("find");
	}

}


3.HelloProxy.java (即所谓的Aspect类)

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class HelloProxy {
         
         //方法执行之前(@Before)打印日志(所谓的Advice特殊功能)
         //execution 表示特殊功能的作用范围
         
	@Before("execution( * com.xj.bean.aop.*.add*(..))")
	private void beforeLog(){     
           System.out.println("before check add");    	
    }
	
	//方法执行之后(@After)打印日志(所谓的Advice特殊功能)
	
	@After("execution(* com.xj.bean.aop.*.delete*(..))")   
	private void afterLog(){           
		System.out.println("after check delete");
	}
}

4.ApplicationContext.xml

   

<?xml version="1.0" encoding="UTF-8" ?>   
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xmlns="http://www.springframework.org/schema/beans"  
     xmlns:aop="http://www.springframework.org/schema/aop"
     xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
     ">   
    
    <aop:aspectj-autoproxy/>      <!-- 需要提供对注解的支持 -->
    <bean id="hello" class="com.xj.bean.aop.HelloImpl"/>    <!-- 定义普通的bean-->
    <bean id="helloProxy" class="com.xj.bean.aop.HelloProxy"/>   <!--定义Aspect的实现-->


5.测试

ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
Hello hello = (Hello)context.getBean("hello");
hello.addHello();
hello.deleteHello();


6.结果

before check add     //add方法之前打印日志
add
delete
after check delete    //delete方法之后打印日志


你可能感兴趣的:(spring,AOP实现)