AOP注解配置

本文以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) {
    
    
		} 
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/WA_MC/article/details/112574069