任何人都可以解释我需要做些什么来实现我自己的注释,它会为我的网络请求添加功能吗?
例如:
@Controller
public class MyController {
@RequestMapping("/abc")
@RequiresSomeSpecialHandling
public void handleSecureRequest() {
}
}
此处@RequiresSomeSpecialHandling
将是我自己的注释,会导致在给定的网络请求/abc
之前或之后完成一些特殊工作。
我知道在非常高的层次上我需要编写一个bean后处理器,扫描我的注释类,并在需要时注入自定义mvc拦截器。但有没有简化此任务的快捷方式?特别是对于上面的两个例子。
提前致谢,
答案 0 :(得分:4)
这种Annotations(在调用方法时添加了额外的功能)看起来像是触发AOP建议的注释。
@see Spring Reference Chapter 7. Aspect Oriented Programming with Spring
我们的想法是使用Annotation触发AOP建议。
像:
@Pointcut("@target(com.example.RequiresAuth)")
答案 1 :(得分:2)
取决于你想要做什么因为@RequiresSomeSpecialHandling。例如。你想让它影响请求映射或方法的调用(即解析方法参数,处理返回值)?
Spring 3.1中对带注释类的支持变得更加可定制。您可以在this repo中浏览一些示例。
还要记住,Spring 3.1中的HandlerInterceptor可以将处理程序Object强制转换为HandlerMethod,这使您可以访问包含其注释的确切方法。这可能足以满足您的需求。
答案 2 :(得分:-2)
如果缓存是您的目标之一,请查看@Cacheable注释(及其兄弟@CachePut
,@CacheEvict
和@Caching
),自Spring 3.1起可用