Tworzenie solidnych i ultraszybkich rozwiązań produkcyjnych bazując na sprawdzonych zaletach frameworka Spring Boot

Pytania w tym artykule pojawiły się podczas szkolenia Tworzenie solidnych i ultraszybkich rozwiązań produkcyjnych bazując na sprawdzonych zaletach frameworka Spring Boot realizowanego w dniach 05-09.06.2017 r.


Jak SpringBoot wspiera konfigurację kontenera servletów?

SpringBoot automatycznie konfiguruje i dostarcza server Tomcat jeśli tylko do zależności projektowych dodane zostaną zależności wskazujące, że środowiskiem działania aplikacji ma być kontener WEB (np. zależności org.springframework.boot:spring-boot-starter-data-rest, lub org.springframework.boot:spring-boot-starter-data-web).


Czy w SpringBoot, zachowując mechanizm automatycznej konfiguracji, jest alternatywa dla kontenera Tomcat?

Tak, obok servera Tomcat można wykorzystać server Jetty (http://www.eclipse.org/jetty/) lub Undertow (http://undertow.io). Server Tomcat jest w SpringBoot konfigurowany domyślnie przy zależnościach spring-boot-starter-data-rest lub spring-boot-starter-data-web. Wystarczy dodać jedną z zależności org.springframework.boot:spring-boot-starter-jetty dla servera Jetty lub org.springframework.boot:spring-boot-starter-undertow dla servera Undertow aby podmienić domyślny server.

Czy w projekcie opartym o SpringBoot można modyfikować konfigurację wbudowanego kontenera WEB z poziomu klasy konfiguracyjnej?

Tak, na konfigurację wbudowanego kontenera WEB można wpływać z poziomu klasy konfiguracyjnej. W tym celu należy, w zależności od wybranego servera (Tomcat, Jetty, Undertow), zarejestrować bean - odpowiednio: TomcatEmbeddedServletContainerFactory, JettyEmbeddedServletContainerFactory lub UndertowEmbeddedServletContainerFactory. Jednakże często wystarczająca jest konfiguracja servera z poziomu pliku application.properties. Konfiguracja z poziomu klasy konfiguracyjnej: @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); //konfiguracja return factory; }