java - RequestMapping 适用于私有(private)方法

标签 java spring spring-mvc spring-boot spring-rest

现在,我的理解是,一般而言,@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/

相关文章:

java - 数组列表不会输出。 Java小程序

java - 作为 TCP 服务器的 EJB 单例

总结其他注解的Java注解

java - 存储过程不产生结果

java - 如何在处理之前拦截 Spring Security 登录请求?

java - 使用 scalac 与 sbt 编译和运行 jar?

java - 如何使 JTable 单元格在单击时执行与双击时不同的操作?

java - 跨客户端身份服务器到客户端传递访问 token

java - Spring MVC ModelAttribute 作为接口(interface)

java - 允许 Spring 在不同的 jars 中有多个 WebMvcConfigurer 实现