这是从WebMvcConfigurerAdapter(Spring的官方文档)中获得的。


  不推荐使用。
  从5.0版开始,WebMvcConfigurer具有默认方法(由Java 8基准实现),可以直接实现而无需此适配器


我查看了WebMvcConfigurer的源代码,但找不到带有关键字“默认”的单个方法。

WebMvcConfigurer如何准确定义默认方法?

我必须承认我不明白


  (由Java 8基准实现)


我尝试使用Google搜索,但“ Java 8基准”没有任何进展。 (某种新功能?)

当前,我的本地设置使用WebMvcConfigurer接口,所有方法都自动生成,并且方法主体中没有任何内容。

我大致遵循Spring REST指南,到目前为止,一切似乎都正常。

究竟如何运作?

编辑

我对WebMvcConfigurer有所怀疑。也就是说,它仅添加或自定义配置。我使用带有@EnableWebMvc的配置类测试了我的本地设置,而没有扩展或实现任何类或接口,并且在类主体中没有任何配置。一切(非常简约的json响应)工作正常。

所以我的猜测是,如果实现WebMvcConfigurer并将方法主体保留为空,则没有关系。

仍然,我的好奇心是,为什么文档说WebMvcConfigurer具有默认方法?

最佳答案

在此配置类的上下文中,Spring 5与早期版本之间的区别是,早期的开发人员使用WebMvcConfigurerAdapter这是一个实现了abstractWebMvcConfigurer类。

如果我们仔细研究为什么这样做,一切将变得非常清晰。
WebMvcConfigurerAdapter类的第一行说:使用空方法的WebMvcConfigurer实现,允许子类仅覆盖其感兴趣的方法
因此,如果有人想自己写配置,他们必须给出method中每个WebMvcConfigurer的实现。
因此,Spring创建了一个abstract类,以便开发人员可以选择他们想要使用的必需功能。

自从JAVA 8起,interfacesdefault实现一起提供,Spring开发人员找到了一种方法,可以通过在abstract本身而不是interface类中提供默认实现来摆脱abstract类。

因此,default关键字被添加为WebMvcConfigurer中每个方法的前缀。

09-13 06:17