Konvertiert vorhandene Spring-Anwendung in Spring-Boot

8

Ich habe eine Spring-basierte REST-Anwendung konfiguriert und ausgeführt, aber jetzt möchte ich sie in Spring-Boot umwandeln.

Meine Anwendung verwendet Spring-Data-JPA über der JPA-Datenquelle mit dem Hibernate-Provider:

%Vor%

Meine REST-Endpunkte wurden mithilfe von SpringMVC mit der folgenden Konfiguration implementiert:

%Vor%

Webinitialisierung:

%Vor%

Das Problem ist, dass ich die automatische Spring-Boot-Konfiguration nicht verwenden möchte, weil ich meine vorhandenen Konfigurationsklassen mit minimalen Änderungen wiederverwenden möchte, aber ich kann den richtigen Weg dafür nicht finden. Ich habe versucht, Spring-Boot-Anwendung Klasse mit @SrpingBootApplication kommentiert, aber ich bin nicht 100% sicher, dass meine Config-Klassen verwendet wird, denn in diesem Fall bekomme ich java.lang.ClassCastException: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean$$EnhancerBySpringCGLIB$$ba21071f cannot be cast to javax.persistence.EntityManagerFactory .

Ich habe auch versucht, die Annotation @EnableAutoConfiguration von der Anwendungsklasse wegzuwerfen und TomcatEmbeddedServletContainerFactory bean manuell zu meinem Kontext hinzuzufügen, aber in diesem Fall ist der eingebettete Tomcat nicht richtig konfiguriert.

Es wäre großartig, wenn mir jemand einen Hinweis geben könnte, wie ich mein Problem lösen könnte. Ich glaube, dass ich nur meinen WebInitizer durch Spring-Boot Config ersetzen muss.

    
Alex 23.03.2015, 13:52
quelle

1 Antwort

6

Nachdem ich einen Tag in einer Forschung verbracht hatte, fand ich endlich eine Lösung für mein Problem. Zuerst musste ich meine entityManagerFactory () und transactionManager () Beans ändern:

%Vor%

Außerdem habe ich meine WebInitializer -Klasse vollständig entfernt und die @EnableWebMvc -Anmerkung von MvcConfig entfernt. In Spring-Boot ist es nicht möglich, die Klasse von WebMvcConfigurerAdapter in classpath zu erweitern, da Spring-CVS automatisch alle Einstellungen überspringt, die SpringMVC betreffen. Hier ist die endgültige Version meiner MvcConfig -Klasse:

%Vor%

Ich habe die Version der Spring-Boot-Anwendungsklasse verwendet, die in doc:

angezeigt wird %Vor%

Beachten Sie, dass ich in meinem Fall MultipartAutoConfiguration von der automatischen Konfiguration ausschließen musste, da ich diese Funktion bereits in MvcConfig konfiguriert habe. Bun ist es auch möglich, es autokonfiguriert zu lassen, aber in diesem Fall musste ich die Dateigröße in der Konfigurationsdatei application.properties anpassen oder eine MultipartConfigElement-Bean zu meinem Klassenpfad hinzufügen.

    
Alex 24.03.2015, 15:06
quelle