2013-11-27 28 views
7

Ich möchte meine Projekte auf ein Produkt aus dem Frühjahr umstellen.Wie migriert man von der traditionellen Java Web Application (mit web.xml) zum Spring Boot?

Mein erster Schritt besteht darin, meine Java-Webanwendung von einer generierten WAR-Datei zu einer eigenständigen ausführbaren JAR-Datei zu transformieren, die mit Springboot betrieben wird.

Let's take a open source web application example from github.: Vaadin-Spring Web Application

The web.xml file can be found here.

The root-context file can be found here.

Ich hoffe, dass es einige Führer sind für mich die Transformation durchzuführen.

I have also submit an issue in the spring-boot project.

Antwort

12

Diese Anwendung ist keine Spring MVC-Anwendung, soweit ich das beurteilen kann - es wäre wahrscheinlich viel einfacher, zu migrieren, wenn es ist. Das Ziel (pro Github-Problem) besteht darin, eine ausführbare JAR zu erhalten. Der grundlegende Plan könnte jedoch sein, zuerst zu einem WAR mit Spring Boot und dann zu einem JAR zu migrieren, sobald es funktioniert. Es ist eine ziemlich einfache App, also müssen wir uns nur die web.xml ansehen und sie in die relevanten Spring Boot-Funktionen übersetzen. Hier sind einige allgemeine Anleitungen:

Erstellen Sie eine bereitstellbare WAR durch Erweitern SpringBootServletInitializer (z. B. in einer Klasse namens Application), und fügen Sie die Spring Boot @EnableAutoConfiguration Annotation hinzu. Beispiel:

@Configuration 
    @EnableAutoConfiguration 
    @ComponentScan 
    public class Application extends SpringBootServletInitializer { 

     @Override 
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
      return application.sources(Application.class); 
     } 

fügen dann einige Konfiguration:

  • A @Bean vom Typ Servlet oder ServletRegistrationBean installiert, die Bohne in den Behälter, als ob es ein <servlet/> und <servlet-mapping/> in web.xml

  • A war @Bean vom Typ Filter oder FilterRegistrationBean verhält sich ähnlich (wie ein <filter/> und <filter-mapping/>).

  • Die ApplicationContext in diesem Fall in einer XML-Datei verwurzelt ist, so ist der einfachste erste Schritt ist zu @Import, die in den Frühling Application. Dieser ist so einfach, dass er in ein paar Zeilen als @Bean Definitionen neu erstellt werden kann.

  • Statische Ressourcen zu /public bewegt werden (oder /static oder /resources oder /META-INFO/resources) in der Classpath Wurzel

nach dem Krieg arbeitet wir es ausführbar zu machen, indem eine main Methode zu unserem Application Zugabe, z.B.

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 

Siehe auch die Getting Started Guide on Converting a JAR to a WAR.

Wie gesagt, das größte Problem mit dieser spezifischen App ist, dass es keine Spring MVC App ist. Wie der Ire sagen würde: "Wenn ich dahin wollte, Sir, würde ich nicht von hier aus anfangen."Dies ist eine interessante Frage im Allgemeinen, aber ich empfehle jedem, der eine Spring-Anwendung auf Spring Boot migrieren möchte. Lesen Sie den allgemeinen Rat hier, aber vielleicht beginnen Sie eine andere Diskussion woanders.

Wie auch immer, ich werde eine Bash bei der Konvertierung haben Diese spezifische App (Quellcode ist nett), und diese Antwort aktualisieren, wenn ich etwas Neues lerne.

+0

Ich erwarte, dass mit Springboot die Tendenz mehr und mehr von WAR zu JAR geht nice deal of trouble, um eine entwicklungsfreundliche pom.xml zu erstellen, die es mir ermöglicht, produktiv mit Springboot + gwt zu arbeiten. Ich umrahle das ausführbare JAR-Konzept, indem ich das GWT-Jetty deaktiviere und dafür sorge, dass GWT kompiliert legt die Quellen in die META-INF/Ressourcen, um ordnungsgemäß zu arbeiten ng dev Zeit. Aber ja, einige Leute wollen vielleicht von JAR zu WAR wechseln, um auf dem Coud z. App-Engine. Aber im Allgemeinen ist Spring Boot besser als ein JAR. – 99Sono

+0

Was ist mit Mutli Kriegsprojekt? http://stackoverflow.com/questions/35632394/converting-multi-war-application-to-spring-boot – Yosefki

+0

@ dave-syer, danke für die Notizen, finde ich das sehr hilfreich. Ich weiß, dass dies ein sehr alter Beitrag ist. Vor kurzem wurde ich gebeten, eine relativ stabile Non SpringMVC-Webanwendung auf Spring Boot zu migrieren. Die Idee besteht darin, in einen ausführbaren Jar-Stil zu konvertieren, um mit Autoskalierung in der Cloud bereitgestellt werden zu können. Könnten Sie uns Ihre Meinung dazu mitteilen, was sich in den letzten 3 Jahren auf Spring BOOT geändert hat, was für oder gegen beeinflussen kann? – Venkat