首页 > 解决方案 > RequestMapping 适用于私有方法

问题描述

现在,总的来说,我的理解是 @RequestMapping 方法需要公开。他们也可以是私人的吗?如果是这样,我们什么时候使用它?

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

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

标签: javaspringspring-mvcspring-bootspring-rest

解决方案


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

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

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

所以我会将其归类为(次要)错误。现在由程序员保持警惕并记住将这些方法公开。我会看看我是否能找到一个现有的错误票。


推荐阅读