Registrieren Sie Konverter und KonverterFactories mit Anmerkungen in Spring 3

7

Vor allem ... Ich bin im Frühjahr relativ neu, benutze Frühling 3.x und ich mag nicht XML-Konfigurationsdateien ... Ich möchte nicht für jedes Refactoring, das ich in XML-Datei für Updates laufen. .

Ich versuche, Spring auf eine Weise zu konfigurieren, dass für jede Anfrage, wenn ich @ RequestParam / @ RequestBody / @ PathVariable usw. mit einem anderen Typ als String in meinen hadlers habe, Spring die Werte korrekt in diesen Typ konvertiert oder setzt null zu den Argumenten des Handlers (ich verwende niemals primitive Typen in Handler-Argumenten). So weit so gut ...

Bis jetzt habe ich alle converter / converterFactory-Klassen wie folgt registriert:

%Vor%

Gibt es eine Möglichkeit, Konverter mit Anmerkungen zu registrieren?

Kann irgendetwas (oder nur einfaches Zeug) über Spring-XML nur mit Anmerkungen gemacht werden und die XML-Konfiguration ein für allemal loswerden? ... und wie?

    
ApollonDigital 08.12.2012, 13:54
quelle

6 Antworten

9

Spring verfügt nicht über Annotationsunterstützung für Konverter, Sie können jedoch eigene erstellen.

Alles, was Sie brauchen, ist eine benutzerdefinierte Annotation (nennen Sie es @AutoRegistered ) und eine Art Converter / Formatter Registrar (implementiert FormatterRegistrar ), das alle Spring Beans mit dieser @AutoRegistered Annotation registriert (und einige XML, um diesen Registrierungsdienst zu registrieren).

Dann müssen Sie Ihren Converter mit dieser Anmerkung (und einigen anderen Anmerkungen, um es zu machen) kommentieren eine Frühlingsbohne) und das ist alles.

@AutoRegistered Annotation:

%Vor%

Registrierungsdienst:

%Vor%

XML-Konfiguration für den Registrar:

%Vor%

BTW für Ihren enum Konverter brauchen Sie kein ConversionFactory - ein einfacher Konverter ist genug:

%Vor%     
Ralph 08.12.2012 14:41
quelle
6

Zuerst müssen Sie eine Annotation definieren: TypeConverter

%Vor%

Dann müssen Sie den Konvertierungsservice registrieren und alle Beans mit der Anmerkung hinzufügen. Dies wird mit dem folgenden Postprozessor durchgeführt:

%Vor%

Wenn Sie weitere Informationen benötigen, werfen Sie einen Blick auf diesen Blogeintrag

    
gmateo 15.03.2013 02:17
quelle
6

Automatische Registrierung von Converter-Beans wird auch von Spring Boot bereitgestellt, wenn @EnableAutoConfiguration ist aktiviert - siehe Spring Boot-Funktionen . Es scheint, dass keine zusätzlichen Annotationen (abgesehen von der Markierung jeder Converter-Bean als @Component ) dafür erforderlich sind.

    
Steve Chambers 27.04.2015 10:51
quelle
5

Der Ansatz von @Ralph ist ordentlich, ich habe seine Antwort gegeben. Lassen Sie mich auch einen alternativen Ansatz empfehlen, der @Configuration verwendet support - im Wesentlichen eine Möglichkeit, Spring-Beans mit Java anstelle von XML zu konfigurieren. Mit diesem Ansatz können die Nachrichtenkonverter auf diese Weise registriert werden:

%Vor%     
Biju Kunjummen 08.12.2012 18:05
quelle
1

Mit Spring MVC 3.2 können Sie eine Konvertierungsdienstklasse erstellen, die den DefaultFormattingConversionService z. B.

erweitert

ApplicationConversionService.java

%Vor%

und spezifizieren Sie es in der Frühlingskonfiguration, z. B.

Dispatcher-Servlet.xml

%Vor%     
Timothy Anyona 05.02.2014 08:37
quelle
0

Ich bin nicht sicher, ob das in Frühling 3 funktioniert, aber das ist die Lösung für Frühling 4:

%Vor%

DateConverter ist ein benutzerdefinierter Konverter:

%Vor%     
fall 15.12.2017 09:53
quelle