首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

spring中的引介加强

2012-08-25 
spring中的引介增强引介增强是一种比较特殊类型的增强public interface Monitorable {public void setMoni

spring中的引介增强
引介增强是一种比较特殊类型的增强


public interface Monitorable {

public void setMonitorActive(boolean active);
}


public class ControllablePerformanceMonitor extends DelegatingIntroductionInterceptor implements Monitorable{

private ThreadLocal<Boolean> MonitorStatusMap = new ThreadLocal<Boolean>();
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
Object obj = null;
if(MonitorStatusMap.get()!=null && MonitorStatusMap.get()){
PerformanceMonitor.begin(invocation.getClass().getName()+"."+invocation.getMethod().getName());
obj = super.invoke(invocation);
PerformanceMonitor.end();
}
else{
obj = super.invoke(invocation);
}
return obj;
}

public void setMonitorActive(boolean active) {
MonitorStatusMap.set(active);
}
}
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext-introduce.xml");
ForumService fs  = (ForumService)app.getBean("forumService");

Monitorable mi = (Monitorable) fs;
mi.setMonitorActive(true);
fs.removeForum(1);
fs.removeTopic(2);
<!-- 引介增强 -->
<bean id="forumServiceTarget" ref="forumServiceTarget"/>
<property name="interceptorNames">
<list>
<idref local="controllablePerformanceMonitor"/>
</list>
</property>
<property name="proxyTargetClass" value="true"/>
</bean>

热点排行