说明:本文首发于微信公众号并同步至个人博客 http://www.fengzheng.pub/archives/277.html,转载请注明来源。
AOP 是什么东西
首先来说 AOP 并不是 Spring 框架的核心技术之一,AOP 全称 Aspect Orient Programming,即面向切面的编程。其要解决的问题就是在不改变源代码的情况下,实现对逻辑功能的修改。常用的场景包括记录日志、异常处理、性能监控、安全控制(例如拦截器)等,总结起来就是,凡是想对当前功能做变更,但是又不想修改源代码的情况下,都可以考虑是否可以用 AOP 实现。
为什么要面向切面呢,我直接改源代码不是很好吗?当然没有问题,如果情况允许。但是考虑到下面这些情况,我本来写好了1000个方法,有一天,我想加入一些控制,我想在执行方法逻辑之前,检查一些系统参数,参数检查没问题再执行逻辑,否则不执行。这种情况怎么办呢,难道要修改这1000个方法吗,那简直就是灾难。还有,有些线上逻辑执行缓慢,但我又不想重新部署环境,因为那样会影响线上业务,这种情况下,也可以考虑 AOP 方式,Btrace 就是这样一个线上性能排查的神器。
Spring AOP 的用法
面向切面编程,名字好像很炫酷,但是使用方式已经被 Spring 封装的非常简单,只需要简单的配置即可实现。使用方式不是本文介绍的重点,下面仅演示最简单最基础的使用,实现对调用的方法进行耗时计算,并打印出来。
环境说明: JDK 1.8 ,Spring mvc 版本 4.3.2.RELEASE
1. 首先引用 Spring mvc 相关的 maven 包,太多了,就不列了,只列出 Spr