ejb拦截器可以在调用类获取之前更改方法的返回值吗?

时间:2012-07-25 23:02:29

标签: java-ee ejb ejb-3.0 aop interceptor

如果我们在该字段中有代码,该代码具有另一个产品调用的方法,并返回一个对象列表。并且我们需要对代码进行更改以使其更灵活地填充列表以返回,我们可以在临时为客户创建拦截器,在返回列表之前拦截该方法,并在之前从列表中删除项目调用该方法的产品获取列表。

e.g。

OurCode.search()返回foundObjects列表

其他产品电话OurCode.search,收到100件商品

我们可以创建一个在OurCode.search返回之前拦截的拦截器,并改变findObjects的List,删除不必要的项吗?这只是在未来发布之前的临时修复

1 个答案:

答案 0 :(得分:11)

虽然我不建议这样做(为了便于理解,并且根据我的经验,“临时修复”将成为永久修复),你可以使用拦截器来做到这一点。

@AroundInvoke
Object filterSearchResults(InvocationContext ctx) throws Exception {
    Object result = ctx.proceed();
    if ( result != null) {
        List<SearchResult> results = (List<SearchResult>)result;
        // do whatever you want to to with your results here
        return results;
    }
    return result;
}