本文以cn.wit.test.Demo.demo1()的前置为例
applicationContext.xml
<!--扫包 -->
<context:component-scan base-package="cn.wit.advice,cn.wit.test"></context:component-scan>
<!--
proxy-target-class为true使用cglib动态代理(注解用cglib做的)
proxy-target-class为false使用jdk动态代理
-->
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
cn.wit.Demo
- Component表示一个bean
@Component
public class Demo {
@Pointcut("execution(* cn.wit.test.Demo.Demo1())")
public void Demo1(){
System.out.println("demo1");
}
public void Demo2(){
System.out.println("demo2");
}
public void Demo3(){
System.out.println("demo3");
}
}
MyAdvice
- Aspect表示用Aspect方式进行配置
@Component
@Aspect
public class MyAdvice {
@Before("cn.wit.test.Demo.Demo1()")//填切点的id
public void mybefore(){
System.out.println("前置");
}
}
测试
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
Demo demo = ac.getBean("demo",Demo.class);
try {
demo.Demo1();
} catch (Exception e) {
}
}
}