在我的Spring上下文文件的拦截方法,我有这样的事情:使用Spring AOP的唯一注解
<bean id="userCheck" class="a.b.c.UserExistsCheck"/>
<aop:config>
<aop:aspect ref="userCheck">
<aop:pointcut id="checkUser"
expression="execution(* a.b.c.d.*.*(..)) && args(a.b.c.d.RequestObject)"/>
<aop:around pointcut-ref="checkUser" method="checkUser"/>
</aop:aspect>
</aop:config>
abcUserExistsCheck看起来是这样的:
@Aspect
public class UserExistsCheck {
@Autowired
private UserInformation userInformation;
public Object checkUser(ProceedingJoinPoint pjp) throws Throwable {
int userId = ... //get it from the RequestObject passed as a parameter
if (userExists(userId)) {
return pjp.proceed();
} else {
return new ResponseObject("Invalid user);
}
}
和被截获与类这东西看起来是这样的:
public class Klazz {
public ResponseObject doSomething(RequestObject request) {...}
}
This works。在呼叫传递给Klazz之前,UserExistCheck会根据需要执行。问题是,这是我得到它的唯一方法。通过使用注释而不是上下文文件来实现这个工作似乎对我的小脑袋来说太过分了。那么......我应该如何在UserExistsCheck和Klazz中注释这些方法?我还需要别的东西吗?另一类?仍然在上下文文件中的东西?
是的,我已经启用。我也试过这个,但是不起作用,checkUser方法从来没有被调用:( –
fish
2010-04-10 03:36:10
其实这个_did_工作,我刚刚在args中有一个愚蠢的错误,谢谢!现在我想知道我在尝试上下文之前做了什么错误文件的方法... – fish 2010-04-10 05:43:23
+1感谢 - 正是我想要的 – andyb 2011-05-26 10:24:31