我在网上搜索了一个关于如何使用Spring AOP调用我的自定义方法注释但没有找到明确示例的明确示例。
我正在构建一个框架,以便在调用任何POJO上的某些方法时在上下文中注入用户配置文件。
应该通过自定义方法注释调用框架API,比如@RunAsAdmin
。我可以构建注释部分和解析器,我的问题是在调用带注释的方法时调用解析器的最佳方法是什么。
我们正在使用Spring 3.0,并且想知道配置Spring框架以理解那些使用特定注释注释的方法并调用我的注释处理程序(解析器)的最佳实践。
任何示例或指导都将受到高度赞赏。
答案 0 :(得分:2)
拦截对任何带注释的Spring bean方法的调用很简单,请参阅下面的示例。
根据定义,无法拦截对POJO的调用 - 您必须返回代理。
也就是说,您应该为这些POJO实现一个工厂,它将返回代理而不是真正的POJO。您可以使用ProxyFactoryBean http://docs.spring.io/autorepo/docs/spring-framework/3.2.0.BUILD-SNAPSHOT/api/org/springframework/aop/framework/ProxyFactoryBean.html。
//intercepting a call to any method annotated with @com.yours.RunAsAdmin of any Spring-managed bean
@Component @Aspect class RunAsAdminAspect {
@Autowired
private YourRunAsAdminHandler handler;
@Before("@annotation(com.yours.RunAsAdmin)")
public void doRunAsAdmin() {
handler.grantAdminRightsToCurrentUser(); //your real stuff
}
}