为什么Spring允许在私有方法上使用控制器注释的请求映射?
今天在一个春季MVC cotnroller课程中遇到了这个问题为什么Spring允许在私有方法上使用控制器注释的请求映射?,spring,spring-mvc,Spring,Spring Mvc,今天在一个春季MVC cotnroller课程中遇到了这个问题 @RequestMapping(value = { "/foo/*" }, method = { RequestMethod.GET}) private String doThing(final WebRequest request) { ... return "jsp"; } 这使得编写测试变得有点困难,我可能会将其更改为public,但允许在私有方法上进行映射有什么意义呢
@RequestMapping(value = { "/foo/*" }, method = { RequestMethod.GET})
private String doThing(final WebRequest request) {
...
return "jsp";
}
这使得编写测试变得有点困难,我可能会将其更改为public,但允许在私有方法上进行映射有什么意义呢?Java没有提供基于访问修饰符限制注释目标的机制。如@smp7d所述,Java没有限制基于访问修饰符的注释的目标,但是从语法上讲,@RequestMapping不应该在私有方法上工作。我们也不能限制它,因为它会破坏向后兼容性。因此,您可以将方法定义为public,也可以创建自己的自定义实现
看看这个:当然,没有什么可以阻止您将它们添加到私有方法中。但是,从技术上讲,Spring可能会在遇到用
@RequestMapping
注释的私有方法时抛出异常。