![](/img/trans.png)
[英]Correct Use of Spring Boot Hazelcast Auto-Configuration with @SpringAware MapLoader
[英]How to use WebMvcConfigurationSupport from own auto-configuration
我想通过FormattingConversionService
添加Converter
,它需要具有扩展WebMvcConfigurationSupport
的@Configuration类:
@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()
未执行,并且 如何处理呢? 请注意,使用WebMvcConfigurationSupport
并不是硬性要求。 从代码摘录中可以看出,最终目标是将某些枚举配置为由其余控制器不区分大小写地接受。
编辑 :应添加正确的自动配置项目,因为与WebAutoConfig.java
相同的程序包中的其他@Configuration
类正在执行。 认为问题与如何从自动配置中处理扩展WebMvcConfigurationSupport
(或WebMvcConfigurerAdapter
)的配置类有关。
Edit2 :到目前为止,我设法工作的唯一方法是从使用项目扩展config类:
import myautoconfproject.autoconfigure.WebAutoConfiguration;
@Configuration
public class WebConfiguration extends WebAutoConfiguration {
}
但这不再是真正的自动配置。
为了使包含项目作为依赖项的项目的配置自动被获取,您需要将文件META-INF/spring.factories
到类路径(在WebAutoConfig
所在的项目中,并添加以下行)
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
your.package.WebAutoConfig
显然我在WebMvcConfigurerAdapter
错了-自动配置选择了一个:
@Configuration
public class WebAutoConfig extends WebMvcConfigurerAdapter {
@Override
public void addFormatters( final FormatterRegistry registry ) {
registry.addConverter(
String.class,
MyEnum.class,
new EnumCaseInsensitiveConverter<>( MyEnum.class )
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.