11

谁能解释我需要做些什么来实现我自己的注释,以便为我的网络请求添加功能?

例如:

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

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

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

提前致谢,

4

3 回答 3

4

This kind of Annotations, (that add additional functionality when invoking a method) looks like annotations that trigger an AOP Advice.

@see Spring Reference Chapter 7. Aspect Oriented Programming with Spring


The idea is to use the Annotation to trigger the AOP Advice.

like:

@Pointcut("@target(com.example.RequiresAuth)")
于 2012-02-03T10:21:56.507 回答
2

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

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

另请记住,Spring 3.1 中的 HandlerInterceptor 可以将处理程序对象强制转换为 HandlerMethod,这使您可以访问包括其注释在内的确切方法。对于您需要做的事情,这可能已经足够了。

于 2012-02-13T21:51:43.467 回答
-3

如果缓存是您的目标之一,请查看自 Spring 3.1 起可用的@Cacheable注释(及其兄弟@CachePut,@CacheEvict@Caching)。

于 2012-02-03T15:58:58.163 回答