在成功尝试实现我自己的蓝图拦截器以使用命名空间处理程序跟踪方法进入/退出后,我现在正在寻找增强它,其中拦截器本身被定义为同一蓝图 xml 中的另一个 bean,并且我的命名空间元素使用 ref="interceptorBeanName" . 即,我正在尝试注册一个拦截器,该拦截器实际上委托给同一蓝图中定义的另一个拦截器实例。
但是,如何获取蓝图中定义的拦截器 bean 的引用?
我在谷歌搜索了好几个小时。但是,在蓝图中没有任何关于如何做到这一点的文档。
任何有关如何解决此问题的帮助将不胜感激。
编辑:
@Override
public ComponentMetadata decorate(Node node, ComponentMetadata compMeta,
ParserContext cxt) {
cxt.getComponentDefinitionRegistry().registerInterceptorWithComponent(compMeta, new Interceptor() {
@Override
public Object preCall(ComponentMetadata arg0, Method arg1, Object... arg2)
throws Throwable {
info_logger.info(arg1.getName() + " before call");
return null;
}
@Override
public void postCallWithReturn(ComponentMetadata arg0, Method arg1,
Object arg2, Object arg3) throws Throwable {
info_logger.info(arg1.getName() + " after call");
}
@Override
public void postCallWithException(ComponentMetadata arg0, Method arg1,
Throwable arg2, Object arg3) throws Throwable {
info_logger.info(arg1.getName() + " after exception");
}
@Override
public int getRank() {
return 0;
}
});
return compMeta;
}