我有一个GWT应用程序,其RPC服务由GWTHandler bean处理,以便它可以顺利地与Spring集成。该应用程序工作。没有问题。GWT Spring集成 - 如何做AOP日志记录?
我的问题是我不能用Spring做任何AOP日志记录。我喜欢使用AOP从GWT界面记录用户活动。 (当然,我可以按照以前的方式为用户执行的每个操作调用RPC服务并记录这些操作,但这不是AOP方式)。我必须在AOP中这样做,因为这是客户的要求。
我尝试使用普通的切入点模式“执行(* 。(..))”的普通Spring AOP。它能够捕获除GWT服务之外的所有方法。换句话说,它是无用的。我当然可以使用AOP登录后端Spring DAO,但我怎么知道它来自哪个RPC服务?这些DAO被许多类和方法使用(不是GWT专有的)。
我试过探索GWT-ENT包。看上去不错。但是,它适用于客户端,而您的类必须实现Aspectable。这意味着需要对我的GWT应用程序上的所有客户端类进行更改。此外,您不能使用私有方法,因为使用GWT-ENT处理AOP,您需要通过GWT.create而不是new()来创建类。私有方法抛出错误。我设置了一个简单的应用程序,真正的私有方法不起作用。
我试着搜索GWT-SL包(我的GWTHandler来自哪里)。他们提到了关于AOP的一些事情,但信息非常稀缺。谷歌没有给我任何解决方案或例子。
我试过了所有我能想到的东西,并用我所有的努力搜索了Google,但是我找不到解决我的问题的方法。
我想要做的就是通过AOP从我的GWT服务记录方法。假设客户转到“报告”选项卡。然后他点击删除按钮记录。我想通过AOP登录该活动。
我正在使用GWT(与SmartGWT)和Spring/Hibernate堆栈。
经过一番调查,我决定在DAO层而不是GWT(表现层/服务层)中进行AOP日志记录,因为我们不关心用户的视觉按钮选择删除记录。如果他删除了一条记录,它将只使用特定的DAO。所以AOP记录DAO层是有意义的。此外,我意识到我遇到困难的另一个原因是因为处理我正在使用的项目的前一位程序员混合了服务和DAO层。两者之间应该有清晰的分离。 – chris 2010-08-30 13:21:48