这是从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
这是一个实现了abstract
的WebMvcConfigurer
类。
如果我们仔细研究为什么这样做,一切将变得非常清晰。WebMvcConfigurerAdapter
类的第一行说:使用空方法的WebMvcConfigurer实现,允许子类仅覆盖其感兴趣的方法
因此,如果有人想自己写配置,他们必须给出method
中每个WebMvcConfigurer
的实现。
因此,Spring创建了一个abstract
类,以便开发人员可以选择他们想要使用的必需功能。
自从JAVA 8起,interfaces
随default
实现一起提供,Spring开发人员找到了一种方法,可以通过在abstract
本身而不是interface
类中提供默认实现来摆脱abstract
类。
因此,default
关键字被添加为WebMvcConfigurer
中每个方法的前缀。