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.javapackage 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
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
">
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方法之后打印日志