RequestMapping 适用于私有方法



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

我问这个问题的原因是我注意到@RequestMapping也在研究私人方法。为什么会这样?

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

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

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

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

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

正如 JIRA 问题中的关键所回应的那样

这确实按设计工作。我们通常不会限制反射方法的可见性声明,而将选择权留给开发人员。也就是说,对于这种特殊情况,我会推荐公共声明或潜在的包可见声明(没有可见性关键字(,私有处理程序方法实际上在这里更具利基效应。

相关内容

最新更新