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);
		}
		
	}