我想添加Converter
s via FormattingConversionService
,这需要有一个 @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()
没有被执行,并且- RestControllers 路由被破坏(即没有正确映射请求)。
如何解决这个问题?注意使用WebMvcConfigurationSupport
不是硬性要求。从代码摘录中可以看出,最终目标是将某些枚举配置为不区分大小写地被其余控制器接受。
编辑:应该添加自动配置项目已正确设置,因为@Configuration
同一包中的其他类WebAutoConfig.java
正在执行。认为这个问题与如何从自动配置中处理扩展WebMvcConfigurationSupport
(或WebMvcConfigurerAdapter
就此而言)的配置类有关。
Edit2:到目前为止,我设法开始工作的唯一方法是从 using 项目扩展配置类:
import myautoconfproject.autoconfigure.WebAutoConfiguration;
@Configuration
public class WebConfiguration extends WebAutoConfiguration {
}
但这不再是真正的自动配置。