Spring实现指定执行某些类后的方法后再去执行某个特定的步骤 - 后增强拦截器
Spring实现指定执行某些类后的方法后再去执行某个特定的方法 - 后增强拦截器
问题需求: 在执行系统中的某些方法后(如执行类名包含有Controller关键字的类中的方法后,再去执行打印某短信息的方法)。
解决办法
一、在Spring的配置文件中配置名为BeanNameAutoProxyCreator的interceptor
<bean id="accessAdvisor" class="com.wsheng.uiservices.advisors.RestAPIAccessAdvisor" />
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*RestAPI</value> <value>*Controller</value> </list> </property> <property name="interceptorNames"> <list> <value>accessAdvisor</value> </list> </property> </bean>
二、创建类RestAPIAccessAdvisor并实现接口:AfterReturningAdvice
这样当调用完*Controller.java或者是*RestAPI.java这样的类中的方法后,将会执行其中的afterRutrning()方法,
public void afterReturning(Object returnValue, Method method, Object[] params, Object target) throws Throwable { try { String methodName = method.getName(); // 在这里执行相应的逻辑 System.out.println(methodName); } catch (Exception e) { logger.error("Building Rest API Access Metrics Failure!!!", e); } }