Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Spring允许在私有方法上使用控制器注释的请求映射?_Spring_Spring Mvc - Fatal编程技术网

为什么Spring允许在私有方法上使用控制器注释的请求映射?

为什么Spring允许在私有方法上使用控制器注释的请求映射?,spring,spring-mvc,Spring,Spring Mvc,今天在一个春季MVC cotnroller课程中遇到了这个问题 @RequestMapping(value = { "/foo/*" }, method = { RequestMethod.GET}) private String doThing(final WebRequest request) { ... return "jsp"; } 这使得编写测试变得有点困难,我可能会将其更改为public,但允许在私有方法上进行映射有什么意义呢

今天在一个春季MVC cotnroller课程中遇到了这个问题

    @RequestMapping(value = { "/foo/*" }, method = { RequestMethod.GET})
    private String doThing(final WebRequest request) {
        ...
        return "jsp";
    }

这使得编写测试变得有点困难,我可能会将其更改为public,但允许在私有方法上进行映射有什么意义呢?

Java没有提供基于访问修饰符限制注释目标的机制。

@smp7d所述,Java没有限制基于访问修饰符的注释的目标,但是从语法上讲,@RequestMapping不应该在私有方法上工作。我们也不能限制它,因为它会破坏向后兼容性。因此,您可以将方法定义为public,也可以创建自己的自定义实现


看看这个:

当然,没有什么可以阻止您将它们添加到私有方法中。但是,从技术上讲,Spring可能会在遇到用
@RequestMapping
注释的私有方法时抛出异常。