谁能解释一下我需要做些什么来实现我自己的注解,为我的web请求添加功能?
例如:
@Controller
public class MyController {
@RequestMapping("/abc")
@RequiresSomeSpecialHandling
public void handleSecureRequest() {
}
}
在这里,@RequiresSomeSpecialHandling
是我自己的注释,它会导致在给定的web请求/abc
之前或之后执行一些特殊的工作。
我知道,在非常高的层次上,我需要编写一个bean后处理器,扫描注释的类,并在需要时注入自定义的mvc拦截器。但是有没有什么捷径可以简化这项任务呢?尤其是上面的两个例子。
提前谢谢你,
发布于 2012-02-14 05:51:43
取决于您想要作为@RequiresSomeSpecialHandling的结果做什么。例如,您是否希望它影响请求映射或方法的调用(例如,解析方法参数,处理返回值)?
在Spring 3.1中,对带注释的类的支持变得更加可定制。您可以在this repo中浏览一些示例。
还要记住,Spring3.1中的HandlerInterceptor可以将处理程序对象强制转换为HandlerMethod,这使您能够访问确切的方法,包括它的注释。这可能足以满足您需要做的事情。
发布于 2012-02-03 18:21:57
这种类型的注释(在调用方法时添加额外的功能)看起来像是触发AOP通知的注释。
@查看Spring Reference Chapter 7. Aspect Oriented Programming with Spring
我们的想法是使用Annotation来触发AOP建议。
像这样:
@Pointcut("@target(com.example.RequiresAuth)")
发布于 2012-02-03 23:58:58
如果缓存是您的目标之一,请看一下@Cacheable注释(以及它的兄弟@CachePut
、@CacheEvict
和@Caching
),该注释在Spring3.1中可用。
https://stackoverflow.com/questions/9126888
复制相似问题