2013-11-27 34 views
7

Chcę zamienić moje projekty na produkt wiosenny.Jak przeprowadzić migrację z tradycyjnej aplikacji sieciowej Java (z web.xml) do wiosennego rozruchu?

Pierwszym krokiem jest przekształcenie mojej aplikacji internetowej java z wygenerowanego pliku WAR, do samodzielnego pliku wykonywalnego jar, zasilanego przez rozruch wiosenny.

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.

Mam nadzieję, że istnieje kilka przewodników dla mnie do przeprowadzenia transformacji.

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

Odpowiedz

12

Ta aplikacja nie jest aplikacją Wiosna MVC ile mogę powiedzieć - będzie to prawdopodobnie dużo łatwiej migrować jeśli to było. Celem (według wydania github) jest uzyskanie wykonywalnego pliku JAR. Podstawowym planem może być jednak migracja najpierw do WAR przy użyciu Spring Boot, a następnie do JAR, gdy działa. Jest to dość prosta aplikacja, więc wszystko, co naprawdę musimy zrobić, to spojrzeć na web.xml i przetłumaczyć ją na odpowiednie funkcje Spring Boot. Oto kilka ogólnych instrukcji:

Utwórz możliwą do wdrożenia WAR przez rozszerzenie SpringBootServletInitializer (np. W klasie o nazwie Application) i dodaj adnotację Spring Boot @EnableAutoConfiguration. Przykład:

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

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

Następnie dodać konfigurację:

  • @Bean typu Servlet lub ServletRegistrationBean instaluje bean zbiornika tak, jakby to był <servlet/> i <servlet-mapping/> w web.xml

  • A @Bean typu Filter lub FilterRegistrationBean zachowuje się podobnie (jak <filter/> i <filter-mapping/>).

  • ApplicationContext w tym przypadku jest zakorzenione w pliku XML, więc najprostszym Pierwszym krokiem jest @Import że do wiosny Application. Ten jest tak prosty, że można go odtworzyć w kilku wierszach jako definicje.

  • Statyczne zasoby mogą zostać przeniesione do /public (lub /static lub /resources lub /META-INFO/resources) w korzeniu ścieżce klasy

Gdy wojna się pracę wykonujemy to wykonywalny dodając metodę main aby nasz Application, np

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

Zobacz także Getting Started Guide on Converting a JAR to a WAR.

Jak już powiedziałem, największym problemem związanym z tą konkretną aplikacją jest to, że nie jest to aplikacja Spring MVC. Jak powiedziałby Irlandczyk: "Gdybym chciał tam dotrzeć, proszę pana, nie chciałbym zaczynać tutaj."Ogólnie jest to interesujące pytanie, ale polecam wszystkim, którzy chcą przenieść aplikację Spring do Spring Boot, zapoznajcie się z ogólną radą, ale może rozpocznijcie kolejną dyskusję gdzie indziej."

W każdym razie, będę miał bash przy konwersji ta konkretna aplikacja (słoiki z kodem źródłowym byłoby miło) i zaktualizuj tę odpowiedź, jeśli nauczę się czegoś nowego

+0

Spodziewam się, że z springbootem, tendencja będzie coraz bardziej rosła od WAR do JAR. niezła porcja kłopotów, by spróbować zainstalować przyjazny pom.xml, który pozwoli mi pracować wydajnie z springboot + gwt. Rozumiem wykonawczą koncepcję JAR, przechodząc przez podwójne wyłączenie mola GWT i upewnienie się, że GWT kompiluje umieszcza źródła w META-INF/zasobach, aby działały prawidłowo duri ng czas dev. Ale tak, niektórzy ludzie mogą chcieć przejść z JAR do WAR, głównie w celu wdrożenia na coud. silnik aplikacji. Ale ogólnie wiosenne buty są ładniejsze jak JAR. – 99Sono

+0

co z projektem mutli war? http://stackoverflow.com/questions/35632394/converting-multi-war-application-to-spring-boot – Yosefki

+0

@ dave-syer, dzięki za notatki, jestem bardzo pomocny. Wiem, że jest to bardzo stary post, ostatnio zostałem poproszony o ocenę przy migracji względnie stabilnej aplikacji internetowej Non SpringMVC do Spring Boot. Pomysł polega na przekonwertowaniu na wykonywalny styl słoika, aby mógł być wdrażany w chmurze z funkcją automatycznego skalowania. Czy mógłbyś doradzić, jaka była twoja opinia na ten temat? Cokolwiek zmieniło się w Spring BOOT w ciągu ostatnich 3 lat, które może wpłynąć na lub przeciw. – Venkat