java如何从自己的自动配置中使用WebMvcConfigurationSupport
我想通过FormattingConversionService
添加Converter
,这需要有一个@Configuration类扩展WebMvcConfigurationSupport
:
@Configuration
public class WebAutoConfig extends WebMvcConfigurationSupport {
@Override
public FormattingConversionService mvcConversionService() {
FormattingConversionService fcs = super.mvcConversionService();
// add Enum converter in order to accept enums
// case insensitively over Rest:
fcs.addConverter(
String.class,
MyEnum.class,
new EnumCaseInsensitiveConverter<>( MyEnum.class )
);
return fcs;
}
}
当@Configuration直接从项目中使用时,它工作得很好,但是需要将这个逻辑添加到我们自己的boot-starter
中,这样就不需要在所有项目中重复代码
问题是,当这个@Configuration被迁移到一个初学者项目时
mvcConversionService()
未执行,并且- RESTController路由已中断(即没有正确映射请求)李>
如何处理这个问题?注:使用WebMvcConfigurationSupport
并不是一项硬性要求。从代码摘录中可以看出,最终目标是将某些枚举配置为rest控制器不区分大小写地接受
Edit:应该补充的是,自动配置项目设置正确,因为与WebAutoConfig.java
相同包中的其他@Configuration
类正在执行。我认为这个问题与如何从自动配置中处理扩展WebMvcConfigurationSupport
(或WebMvcConfigurerAdapter
)的配置类有关
Edit2:到目前为止,我工作的唯一方法是从使用项目扩展config类:
import myautoconfproject.autoconfigure.WebAutoConfiguration;
@Configuration
public class WebConfiguration extends WebAutoConfiguration {
}
但这不再是真正的自动配置
# 1 楼答案
显然,我对
WebMvcConfigurerAdapter
的看法是错误的——这一个是通过自动配置获取的: