verwenden würde ich Converter
s über FormattingConversionService
hinzufügen möchten, die eine @Configuration Klasse mit WebMvcConfigurationSupport
Verlängerung erfordert:Wie WebMvcConfigurationSupport aus eigenen Auto-Konfiguration
@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;
}
}
Es funktioniert gut, wenn die @Configuration verwendet wird direkt aus dem Projekt, aber es ist erforderlich, diese Logik zu unserem eigenen boot-starter
hinzuzufügen, so dass es nicht notwendig wäre, Code in allen Projekten zu duplizieren.
Problem ist, wenn dieses @Configuration einen Starter Projekt migriert wird, dann
mvcConversionService()
nicht ausgeführt wird, und- RestControllers Routing gebrochen ist (dh keine Anfragen korrekt abgebildet werden).
Wie geht man das an? Hinweis mit WebMvcConfigurationSupport
ist keine harte Anforderung. Wie aus dem Codeausschnitt ersichtlich, besteht das Endziel darin, bestimmte Aufzählungen so zu konfigurieren, dass sie von den übrigen Controllern case-insensitiv akzeptiert werden.
bearbeiten: hinzugefügt, dass das Auto-Config-Projekt eingerichtet ist richtig sein soll, wie andere @Configuration
Klassen im selben Paket wie WebAutoConfig.java
Ausführung werden. Denken Sie, dass das Problem damit zu tun hat, wie Konfigurationsklassen, die WebMvcConfigurationSupport
(oder WebMvcConfigurerAdapter
für diese Angelegenheit) erweitern, von Auto-Configs gehandhabt werden.
EDIT2: Nur so habe ich es geschafft, so weit zu kommen zu arbeiten, ist die Config-Klasse aus dem mit Projekt erstreckt:
import myautoconfproject.autoconfigure.WebAutoConfiguration;
@Configuration
public class WebConfiguration extends WebAutoConfiguration {
}
Aber das ist nicht wirklich Auto-Konfiguration mehr.
Was die Einrichtung Ihres Starter Es gibt keine wirkliche schwarze Magie Ihren eigenen Starter, andere als condit zur Umsetzung ionales Laden davon. Sind Sie sicher, dass die Konfiguration von Ihrem Starter gescannt werden würde? –
@DarrenForsythe Ja, es ist sicher aufgenommen, da der Autokonfig-Einstiegspunkt '@ ComponentScan' enthält. Außerdem gibt es andere '@ Configuration'-Klassen in demselben Paket, die ausgeführt werden. – laur