Spring Boot 中使用AOP

    对于Spring Boot 应用,使用AOP 只需要在pom 文件中引入好下依赖:
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-aop</artifactId>
         <version>2.0.0.RELEASE</version>
     </dependency>
     然后编写一个AOP切面类:
package com.hlm.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.Configuration;
//用于声明这是一个spring 管理配置的bean
@Configuration
//声明这是一个切面类
@Aspect
public class AopConfig {
     //声明了一个表达式,描述要织入的目标的特性,如下样子就是想说com.hlm.controller.包下的类都会被织入该切面
     @Around("@within(org.springframework.stereotype.Controller)")
     public Object simpleAop(final ProceedingJoinPoint pjp) throws Throwable{
           try {
           System.out.println("我是方法调用前执行的!");
           //调用原来方法         
           Object obj = pjp.proceed();                     
           System.out.println("我是方法调用后执行的!");
           return obj ;
           
           } catch (Throwable e) {
          //不处理异常,将其抛给调用者
                throw e ;
           }
     }
}


    运行结果为:

我是方法调用前执行的!
123456
我是方法调用后执行的!


    Spring AOP 支持的表达还可以是其他的:如excution(public * *(..)) 或 @targer(com.hlm.service.Commonservice) ,excution 中的是方法,target 中的是接口。

猜你喜欢

转载自blog.csdn.net/mottohlm/article/details/80643720