使用注解配置 AOP

Posted axu521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用注解配置 AOP相关的知识,希望对你有一定的参考价值。

一、使用注解(基于Aspect)

  1、spring不会自动去寻找注解,必须告诉spring那个包下的类有注解

    1.1 先引入xmlns:context命名空间

<context:component-scan base-package="com.bjsxt.advice"></context:component-scan>

   2、@Component

    2.1 相当于<bean/>

    2.2 如果没有参数,把类名首字母变小写,相当于<bean id=" "/>

    2.3 也可以 @Component(" 自定义名称 ")

   3、实现步骤:

    3.1、在spring配置文件中设置注解在哪些包中

<context:component-scan base-package="com.bjsxt.advice,com.bjsxt.test"></context:component-scan>

    3.2、在Demo类中添加 @Componet

      3.2.1 在方法上添加 @Pointcut("  ") 定义切点

@Component
public class Demo {
    @Pointcut("execution(* com.bjsxt.test.Demo.demo1())")
    public void demo1(){
        System.out.println("demo1");
    }
}

    3.3、在通知类中配置

      3.3.1 @Component 类被spring管理

      3.3.2 @Aspect 相当于<aop:aspect/> 表示通知方法在当前类中

@Component
@Aspect
public class Advice {
    @Before("com.bjsxt.test.Demo.demo1()")
    public void mybefore(){
        System.out.println("前置通知111");
    }
    @After("com.bjsxt.test.Demo.demo1()")
    public void myafter(){
        System.out.println("后置通知2222");
    }
    @AfterThrowing("com.bjsxt.test.Demo.demo1()")
    public void mythrow(){
        System.out.println("异常通知3333");
    }
    @Around("com.bjsxt.test.Demo.demo1()")
    public Object myarround(ProceedingJoinPoint p) throws Throwable{
        System.out.println("环绕前置");
        Object result = p.proceed();
        System.out.println("环绕后置");
        return result;
    }
}

 

以上是关于使用注解配置 AOP的主要内容,如果未能解决你的问题,请参考以下文章

基于注解的Spring AOP的配置和使用--转载

基于注解的Spring AOP的配置和使用--转载

基于注解的Spring AOP的配置和使用

阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置

spring事务管理,xml配置aop事务和注解配置aop事务

基于注解的Spring AOP的配置和使用--转载