Converter
を介して sを追加したいのです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 :これまでに作業を開始できた唯一の方法は、使用中のプロジェクトから構成クラスを拡張することです:
import myautoconfproject.autoconfigure.WebAutoConfiguration;
@Configuration
public class WebConfiguration extends WebAutoConfiguration {
}
しかし、それはもはや自動構成ではありません。