在springboot中使用AOP

最近学习了一下aop的使用,aop在项目开发中是必备的技能,不管是面试还是日常工作都需要用到,学习一下还是很有必要的。
话不多说,直接上代码
切面类LogAspect

@Aspect
@Component
public class LogAspect {

    //    @Pointcut("@annotation(com.company.demo.annotation.LogAnnotation)")
    @Pointcut("execution(public * com.company.demo.service.LogService.testService())")
    public void logMethod() {
    }

    ;

    @Around("logMethod()")
    public Object logArround(ProceedingJoinPoint pjp) {
        Object proceed = null;
        try {
            System.out.println("环绕开始");
            proceed = pjp.proceed();
            System.out.println("环绕结束");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return proceed;
    }
}

被切的类LogService

@Service
public class LogService {

    @LogAnnotation("haha")
    public void testService(){
        System.out.println("hello world!");
    }
}

这里用两种方法进入切面,注解和execution
注解LogAnnotation代码

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogAnnotation {

    String value() default "";
}

这里贴下execution表达式解析

execution(modifiers-pattern? ret-type-pattern
declaring-type-pattern?name-pattern(param-pattern)
throws-pattern?)

execution(方法修饰符(可选) 返回类型 类路径 方法名 参数 异常模式(可选))

测试代码

@SpringBootTest
@RunWith(SpringRunner.class)
public class Test01 {

    @Autowired
    LogService logService;

    @Test
    public void test02(){
        logService.testService();
    }

结果

环绕开始
hello world!
环绕结束

ok! aop的简单使用就是这么多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值