我们要对现有的系统进行改造,想对某个方法进行修改(比如对参数的修改),但这个方法被调用的地方太多,没法直接修改这个方法,我想能不能做个监控,监控这个方法被调用时执行某个任务。请问怎么能实现?
用spring来动态代理这个类,给这个类加上一个拦截器做你想做的事,比如这个方法被调用时执行某个任务
可以去看看Spring里关于aop的知识,先了解一下代理aspect的概念和使用,
下面是Spring里配置的一段, 下面的中aop:pointcut就是设置一个切入点,expression="execution(* com.service.impl.*.*(..))"这个表达式要专门学习的,这里的意思就是说com.service.impl这个路径下的所有文件执行时,都要调用
tx:attributes
/tx:attributes
/tx:advice
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* com.lhq.prj.bms.service.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
</aop:config>
代理刚开始学还是比较抽象的,建议多动手做做代理的简单例子,再入手Spring的代理,以及aop方面的知识