我有一个JSF2应用程序,它使用Spring进行交易,安全和DI容器
该应用程序有3层:
1. JSF视图+ JSF管理Bean
2.服务类别
3. DAO班级
所以,请求是这样的:
JSF页面 - > JSF MB - >服务类 - > DAO类 - > DB,反之亦然。
我的问题是,有些服务方法在执行业务后必须向DB记录该事件
例如,当某人激活/停用用户时。我想将此操作与用户ID一起记录
所以,我在这里只看到两种方法:(我确定还有更多)
1.在此方法中,我确定登录用户并执行实际记录
- 由于我在这里的缺点,我会看到这个方法不会那么容易测试,因为从SpringSecurity中选择了userId
2.使用SpringAOP。这种方式是非侵入性的,这很酷,但后来我会有一个方面,一个方法,这是不是那么有效。
我想知道你们是否有这样的问题,如果有的话,你们是如何解决的?
答案 0 :(得分:0)
考虑引入标记注释。我们称之为:@LogEvent。然后注释您希望拦截的每个方法。通过这种方式,您可以使用不与命名约定匹配的建议实现单个方面,而是与@LogEvent的存在相匹配。
类似的东西:
@After("execution(@LogEvent * *.*(..))")