RequestMapping 适用于私有方法

Vip*_*non 5 java spring spring-mvc spring-boot spring-rest

现在,我的理解通常是 @RequestMapping 方法需要是公共的。它们也可以是私有的吗?如果是这样,我们什么时候会使用这个?

我问这个问题的原因是我注意到 @RequestMapping 也适用于私有方法。为什么会这样呢?

是否因为 spring 通过反射访问这些方法,所以没有真正考虑访问修饰符?这是一个错误还是一个有用的功能?

Kay*_*man 6

现在,如果不深入 Spring 开发人员的头脑,很难说出真正的原因(如果存在的话),因为这是很久以前实现的。

我猜想这是一个疏忽,因为使用私有方法作为请求映射的目标并没有显着的优势。当然,您不能再从其他代码中调用它们,但如果您从代码中调用控制器方法,那么您遇到的所有问题都是罪有应得。

此链接描述了一个有趣的情况,其中请求映射适用于包私有方法,但由于 AOP 仅适用于公共方法,因此结果是混乱和破坏。还有 4(四!) 个地方可以应用修复程序来防止非公共方法成为@RequestMapping.

所以我将其归类为一个(小)错误。现在程序员要保持警惕并记住将这些方法公开。我将看看是否可以找到此问题的现有错误单。