现在,我的理解是,一般而言,@RequestMapping 方法需要公开。他们也可以是私有(private)的吗?如果是这样,我们什么时候使用它?
我问这个问题的原因是我注意到 @RequestMapping 也适用于私有(private)方法。为什么会这样?
是否因为 spring 通过反射访问这些方法,所以没有真正考虑访问修饰符?这是错误还是有用的功能?
最佳答案
如果不进入 Spring 开发人员的头脑,很难说出真正的原因(如果存在的话),因为这是很久以前实现的。
我猜这是一个疏忽,因为使用私有(private)方法作为请求映射的目标并没有明显的优势。当然,您不能再从您的其他代码中调用它们,但是如果您从您的代码中调用 Controller 方法,那么您遇到的所有问题都是您应得的。
This link描述了一个有趣的情况,其中请求映射适用于包私有(private)方法,但由于 AOP 仅适用于公共(public)方法,结果是困惑和破坏。还有 4(四!)个地方可以应用修复程序来防止非公共(public)方法成为 @RequestMapping
的目标。
所以我将其归类为(小)错误。现在由程序员保持警觉并记住将这些方法公开。我会看看是否可以为此找到现有的错误票。
关于java - RequestMapping 适用于私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50563524/