这是我在stackoverflow上的第一篇文章...... 好吧,好吧。 我有一个自定义弹簧AOP注释,适用于此方法
@testInterceptor
public MyObjList getMyObjList( List qlist,Context cntxt){
//some processing
List<MyObj> myObjList= getMyObjs(qlist,cntxt);
//Some more processing
return myObjList;
}
public List<MyObj> getMyObjs( List qlist,Context cntxt){
List<MyObj> myObjList= new ArrayList<MyObj>();
//Some more processing
return myObjList;
}
我意识到这个注释实际上应该在getMyObjs()方法中。 所以我将注释移动到getMyObjs(),但由于某种原因,现在没有应用方面。 我不明白为什么。
@testInterceptor
public List<MyObj> getMyObjs( List qlist,Context cntxt){
List<MyObj> myObjList= new ArrayList<MyObj>();
//Some more processing
return myObjList;
}
答案 0 :(得分:1)
由于Spring使用AOP的方式,为了使@testInterceptor
能够在getMyObjs
上工作,需要从类外部调用该方法。从getMyObjList
调用它不会涉及拦截器。
查看this博文,了解更多详情。
通过一个例子澄清我的上述内容:
假设你有另一个班级
class Foo {
@Autowired
private MyObjList myObjList;
//this will invode the interceptor
public void willWork() {
myObjList.getMyObjs();
}
public void willNotWork() {
myObjList.getMyObjList(); //will not invoke interceptor since `getMyObjs` is being invoked from inside the class that it's defined
}
}