0

我有一个正确配置的 http 调用程序设置并处于工作状态。对于身份验证,我使用 AOP,它本质上根据各种标准(如 Web 上下文、用户名密码等)将身份验证位添加到本地线程中。

而现在,问题。当@service end 收到呼叫时,我的服务对身份验证位进行了讨论。经过仔细调试,我意识到从未调用过相应的方面。

这是将身份验证位添加到线程本地的方面的相关代码。

@Before(value = "execution(public * provision(..))")
public void authenticate(){...}

这是被调用的服务方法。

public ServiceResponse provision(String xyz, String abc){...}

如果我在本地设置中调用“provision()”方法,则会调用方面。但是当通过http-invoker调用这个方法时,它不会被调用吗?我怎样才能优雅地规避这个问题?(我有一个解决方案,我将身份验证部分添加到 provision() 方法中,但这妨碍了我的测试能力和 SRP。

4

1 回答 1

0

AOP 代理是如何创建的?是否通过自动代理完成?由于您使用的是 HttpInvokerServiceExporter,我假设您至少还有两个上下文,即应用程序的主上下文和指定导出器的 -servlet.xml 文件。它是否正确?可能存在问题,因为主上下文中的 AOP 配置不会传播到子 -servlet.xml 上下文。

于 2011-10-26T17:39:58.277 回答