【发布时间】:2014-11-20 21:20:39
【问题描述】:
是否可以使用预定义的一组参数创建等效于 Spring MVC @RequestMapping 的 Java 注释?
例如,让我可以简单地使用的东西:
@PostJson("/input")
public Output myMethod(Input input) {
代替:
@RequestMapping(value = "/input",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public Output myMethod(Input input) {
更新: 让我尝试更深入地挖掘。 AFAIK,Spring 似乎能够在扫描 bean 时处理元注释。例如,如果我创建一个注解,比如说@MyComponent,然后用@Component 进行注解:
@Component
public @interface MyComponent {
String value() default "";
}
Spring 似乎能够找到带有@MyComponent 的bean 并识别@MyComponent 中的参数(在这种情况下为值),就好像它们来自@Component 一样
@MyComponent("MyBean")
public class SomeClass {
我用@RequestMapping 尝试过类似的策略
@RequestMapping(method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
public @interface PostJson {
String value() default "";
}
固定参数(产生的方法)似乎是正确的,但可变参数(值)被忽略了。
我希望这不是@Component 特有的功能,我可以将它与@RequestMapping 一起使用。
【问题讨论】:
-
所以,不,
@Component的元注释行为不适用于@RequestMapping。正如我在下面所说的,@RequestMapping由RequestMappingHandlerMapping处理,它不检查其他任何内容。
标签: java spring spring-mvc