考虑与此类似关于跨领域关注的有趣的AOP问题?
public void addObject(Long sessionId, Long clientId, Dom obj){...}
现在每个域POJO(Dom
)方法一组波达都有sessionId
属性和每个插入,更新或删除域对象一个sessionId
必须setSessionId(Long sessionId)
如此传递我们可以知道谁做了什么。但似乎这切入了所有数据访问的内容,我们和我认为AOP将成为将sessionId
插入@Before(JoinPoint)
或@Around(ProceedingJoinPoint)
建议的好工具。这实际上可行吗?这些DAO大部分都是基于Hibernate的一些Spring StoredProcedure
。
我很困惑......如果sessionId是Dom对象的一部分,为什么它也是DAo方法中的参数? – skaffman 2009-10-05 21:42:20
控制我的错误,但要澄清sessionId在代码中手动(以编程方式)设置,但上面的方法是一个建议的解决方案,其中AOP可以插入sessionId而无需开发人员处理它。方法签名是不正确的,因为某些东西需要传递给sessionId的方法。建议会从实用程序代码中检索sessionId并插入它。 – 2009-10-05 21:50:41