首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向Spring MVC添加自定义批注?

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

Stack Overflow用户
提问于 2012-02-03 18:09:43
回答 3查看 9.5K关注 0票数 11

谁能解释一下我需要做些什么来实现我自己的注解,为我的web请求添加功能?

例如:

代码语言:javascript
运行
复制
@Controller
public class MyController {
    @RequestMapping("/abc")
    @RequiresSomeSpecialHandling
    public void handleSecureRequest() {
    }
}

在这里,@RequiresSomeSpecialHandling是我自己的注释,它会导致在给定的web请求/abc之前或之后执行一些特殊的工作。

我知道,在非常高的层次上,我需要编写一个bean后处理器,扫描注释的类,并在需要时注入自定义的mvc拦截器。但是有没有什么捷径可以简化这项任务呢?尤其是上面的两个例子。

提前谢谢你,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-14 05:51:43

取决于您想要作为@RequiresSomeSpecialHandling的结果做什么。例如,您是否希望它影响请求映射或方法的调用(例如,解析方法参数,处理返回值)?

在Spring 3.1中,对带注释的类的支持变得更加可定制。您可以在this repo中浏览一些示例。

还要记住,Spring3.1中的HandlerInterceptor可以将处理程序对象强制转换为HandlerMethod,这使您能够访问确切的方法,包括它的注释。这可能足以满足您需要做的事情。

票数 2
EN

Stack Overflow用户

发布于 2012-02-03 18:21:57

这种类型的注释(在调用方法时添加额外的功能)看起来像是触发AOP通知的注释。

@查看Spring Reference Chapter 7. Aspect Oriented Programming with Spring

我们的想法是使用Annotation来触发AOP建议。

像这样:

代码语言:javascript
运行
复制
@Pointcut("@target(com.example.RequiresAuth)")
票数 4
EN

Stack Overflow用户

发布于 2012-02-03 23:58:58

如果缓存是您的目标之一,请看一下@Cacheable注释(以及它的兄弟@CachePut@CacheEvict@Caching),该注释在Spring3.1中可用。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9126888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档