为什么我必须在实现类而不是仅接口类上使用@RequestParam批注?

楚奇涅维奇

为什么我必须@RequestParam在实现类而不是仅接口类上使用批注?我在单独的文件方法中使用接口和实现。似乎@RequestParamon接口的使用没有效果。

public interface GreetingService {

    @RequestMapping(value = "/greeting", method = RequestMethod.GET)
    public Greeting greetingByGet(@RequestParam(value="name", defaultValue="World") String name);

}

@RestController
public class GreetingController implements GreetingService {

    @Override
    public Greeting greetingByGet(
    /** 
    * Why do I need to duplicate @RequestParam annotation on 
    * implementation to make it work ??? 
    * Otherwise GET default value is not used. 
    */ 
    @RequestParam(value="name", defaultValue="World")
    String name) {

        ...
    }
}

它作出的注解一样感觉@Transactional这是实现特定的,但@RequestParam@RequestBody等实现特定的?还是这是接口合同的一部分?@RequestBody(required)建议它是合同的一部分,因此应支持在接口上使用它。

这里有一个解释:Spring MVC带注释的控制器接口,但问题是:该解释背后是否有更一般的想法?还是只有Spring内部人员才能迫使我们像现在这样去做?

很难理解为什么注释不继承到实现中。

汤玛士

Java不为接口上的注释,方法或方法参数提供继承。尽管有@Inherited注释,但它仅在类级别起作用,请参见http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Inherited.html

因此,这不是由于Spring或设计决策,而是与Java语言设计有关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Typescript-使用类作为接口,为什么我必须实现私有成员/方法?

来自分类Dev

为什么必须在抽象类上实现具体的析构函数?

来自分类Dev

为什么我们在实现派生接口的类上重新实现派生接口的父接口

来自分类Dev

为什么我不能在用具体类型替换接口的类上实现接口?

来自分类Dev

为什么有时在使用 Comparable 或其他接口时必须在尖括号中声明类类型?

来自分类Dev

在Vue.js 3中,为什么我必须在ref上使用value属性,而不是在active上使用?

来自分类常见问题

什么时候必须使用接口而不是抽象类?

来自分类Dev

为什么必须在定义的类中导入嵌套类?

来自分类Dev

如果泛型类型约束还必须在c#中实现接口,则类类型约束将实现什么?

来自分类Dev

为什么派生自Comparer <T>类而不是实现IComparer <T>接口的实现类?

来自分类Dev

为什么宿主元素上的伪类必须在宿主函数内部?

来自分类Dev

如果我在配置类上使用@ActiveProfiles批注,而不是在定义我的bean的类上使用它,那么在Spring中会发生什么?

来自分类Dev

为什么我们不能在WCF中使用抽象类而不是接口?

来自分类Dev

为什么必须在C ++类定义中声明方法?

来自分类Dev

为什么必须在类中调用_internal()?

来自分类Dev

为什么Abstract Factory使用抽象类而不是接口?

来自分类Dev

为什么Typescript类自动实现接口?

来自分类Dev

为什么我必须在客户端库中公开宏实现的“使用”?

来自分类Dev

为什么在Spring配置类中必须使用@Configuration批注注释的默认构造函数?

来自分类Dev

为什么必须使用继承类的全名调用具有相同名称(不是签名)的基类上的方法?

来自分类Dev

为什么我必须在抽象类中将字段声明为“公共”才能从派生类访问它?

来自分类Dev

C#:我的派生类无法覆盖基类的接口方法实现,为什么?

来自分类Dev

为什么CSS库使用通用类和特定类而不是仅使用特定类

来自分类Dev

为什么我们需要实现接口以提供某些功能,而不是仅定义方法而不实现接口?

来自分类Dev

提取api,为什么我必须在响应json()上使用then,试图做出承诺

来自分类Dev

提取api,为什么我必须在响应json()上使用then,试图做出承诺

来自分类Dev

为什么我要进入Form1扩展方法必须在非泛型静态类中定义?

来自分类Dev

在扩展类上,我可以使用实现多个接口的类的getter和setter方法吗

来自分类Dev

为什么我必须在jQuery查询后使用[0]

Related 相关文章

  1. 1

    Typescript-使用类作为接口,为什么我必须实现私有成员/方法?

  2. 2

    为什么必须在抽象类上实现具体的析构函数?

  3. 3

    为什么我们在实现派生接口的类上重新实现派生接口的父接口

  4. 4

    为什么我不能在用具体类型替换接口的类上实现接口?

  5. 5

    为什么有时在使用 Comparable 或其他接口时必须在尖括号中声明类类型?

  6. 6

    在Vue.js 3中,为什么我必须在ref上使用value属性,而不是在active上使用?

  7. 7

    什么时候必须使用接口而不是抽象类?

  8. 8

    为什么必须在定义的类中导入嵌套类?

  9. 9

    如果泛型类型约束还必须在c#中实现接口,则类类型约束将实现什么?

  10. 10

    为什么派生自Comparer <T>类而不是实现IComparer <T>接口的实现类?

  11. 11

    为什么宿主元素上的伪类必须在宿主函数内部?

  12. 12

    如果我在配置类上使用@ActiveProfiles批注,而不是在定义我的bean的类上使用它,那么在Spring中会发生什么?

  13. 13

    为什么我们不能在WCF中使用抽象类而不是接口?

  14. 14

    为什么必须在C ++类定义中声明方法?

  15. 15

    为什么必须在类中调用_internal()?

  16. 16

    为什么Abstract Factory使用抽象类而不是接口?

  17. 17

    为什么Typescript类自动实现接口?

  18. 18

    为什么我必须在客户端库中公开宏实现的“使用”?

  19. 19

    为什么在Spring配置类中必须使用@Configuration批注注释的默认构造函数?

  20. 20

    为什么必须使用继承类的全名调用具有相同名称(不是签名)的基类上的方法?

  21. 21

    为什么我必须在抽象类中将字段声明为“公共”才能从派生类访问它?

  22. 22

    C#:我的派生类无法覆盖基类的接口方法实现,为什么?

  23. 23

    为什么CSS库使用通用类和特定类而不是仅使用特定类

  24. 24

    为什么我们需要实现接口以提供某些功能,而不是仅定义方法而不实现接口?

  25. 25

    提取api,为什么我必须在响应json()上使用then,试图做出承诺

  26. 26

    提取api,为什么我必须在响应json()上使用then,试图做出承诺

  27. 27

    为什么我要进入Form1扩展方法必须在非泛型静态类中定义?

  28. 28

    在扩展类上,我可以使用实现多个接口的类的getter和setter方法吗

  29. 29

    为什么我必须在jQuery查询后使用[0]

热门标签

归档