1.AOP使用实例:
创建用于拦截的bean。
public class TestBean {
private String testStr = "testStr";
public String getTestStr() {
return testStr;
}
public void setTestStr(String testStr) {
this.testStr = testStr;
}
public void test(){
System.out.println("test");
}
}
创建Advisor
@Aspect
public class AspectJTest {
@Pointcut("execution(* *.test(..))")
public void test(){}
@Before("test()")
public void beforeTest(){
System.out.println("beforeTest");
}
@After("test()")
public void afterTest(){
System.out.println("afterTest");
}
public Object aroundTest(ProceedingJoinPoint p){
System.out.println("before1");
Object o = null;
try {
o = p.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
System.out.println("after1");
return o;
}
}
在配置文件中声明
<?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-4.3.xsd"
default-autowire="byName">
<aop:aspectj-autoproxy/>
<bean id="test" class="test.TestBean"/>
<bean class="test.AspectJTest"/>
</beans>
测试类:
public static void main(String[] args) {
ApplicationContext bf = new ClassPathXmlApplicationContext("spring.xml");
TestBean testBean = (TestBean) bf.getBean("test");
testBean.test();
}
运行结果:
beforeTest
before1
test
after1
afterTest