如何向Spring MVC添加自定义注释?

时间:2012-02-03 10:09:43

标签: spring spring-mvc spring-annotations

任何人都可以解释我需要做些什么来实现我自己的注释,它会为我的网络请求添加功能吗?

例如:

@Controller
public class MyController {
    @RequestMapping("/abc")
    @RequiresSomeSpecialHandling
    public void handleSecureRequest() {
    }
}

此处@RequiresSomeSpecialHandling将是我自己的注释,会导致在给定的网络请求/abc之前或之后完成一些特殊工作。

我知道在非常高的层次上我需要编写一个bean后处理器,扫描我的注释类,并在需要时注入自定义mvc拦截器。但有没有简化此任务的快捷方式?特别是对于上面的两个例子。

提前致谢,

3 个答案:

答案 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起可用