如何在项目中使用AOP

1、Spring配置文件中增加aop相关配置

  • xmlns:aop="http://www.springframework.org/schema/aop" 代表加入命名空间
  • 使用aop命名空间开起自动代理



    
    


2、注解AOP

package me.laiyijie.demo.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Service;

@Service
@Aspect
public class TimeMonitor {

    @Around("execution(* me.laiyijie.demo.service.UserServiceImpl.sayHello(..))")
    public void monitorAround(ProceedingJoinPoint pjp) throws Throwable {

        System.out.println("method start time:" + System.currentTimeMillis());

        Object re = pjp.proceed();

        System.out.println("method end time:" + System.currentTimeMillis());

    }
}
  • 类有两个注释,分别是@Service和@Aspect,第一个注解是使得TimeMonitor受Spring托管并实例化。@Aspect就是使得这个类具有AOP功能(你可以这样理解)两个注解缺一不可
@Around(“execution(* me.laiyijie.demo.service.UserServiceImpl.sayHello(..))”)
  • @Around表示包围一个函数,也就是可以在函数执行前做一些事情,也可以在函数执行后做一些事情
    execution(* me.laiyijie.demo.service.UserServiceImpl.sayHello(..)) 这个比较好理解,就是使用表达式的方式指定了要对哪个函数进行包围!

3、spring配置文件中配置切面代替注解


        
            
            
        
    

参考文章
Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置

你可能感兴趣的:(如何在项目中使用AOP)