Пролетно зареждане без уеб сървър

1. Въведение

Spring Boot е чудесна рамка за бързо създаване на нови Java приложения за различни случаи на употреба. Едно от най-популярните приложения е като уеб сървър, като се използва един от многото поддържани вградени контейнери за сървлети и механизми за шаблони.

Въпреки това, Пролет Boot има редица приложения, които не изискват уеб сървър : конзолни приложения, график на работа, партида или множествени потоци от данни, сървър и приложения, както и повече.

В този урок ще разгледаме няколко различни начина за използване на Spring Boot без уеб сървър.

2. Използване на зависимости

Най-лесният начин да попречите на приложението Spring Boot да стартира вграден уеб сървър е да не включвате стартера на уеб сървъра в нашите зависимости .

Това означава да не се включва зависимостта spring-boot-starter-web нито в файла за изграждане на Maven POM, нито в Gradle. Вместо това бихме искали да използваме по-основната зависимост на пружинно стартиране на негово място.

Имайте предвид, че е възможно зависимостите на Tomcat да бъдат включени в нашето приложение като преходни зависимости . В този случай може да се наложи да изключим библиотеката Tomcat от зависимостта, която я включва.

3. Промяна на приложението Spring

Друг начин за деактивиране на вградения уеб сървър в Spring Boot е чрез използване на код. Можем да използваме или SpringApplicationBuilder :

new SpringApplicationBuilder(MainApplication.class) .web(WebApplicationType.NONE) .run(args);

Или можем да използваме препратката към SpringApplication :

SpringApplication application = new SpringApplication(MainApplication.class); application.setWebApplicationType(WebApplicationType.NONE); application.run(args);

И в двата случая имаме предимството да поддържаме API на сървлета и контейнера на разположение в пътя на класа . Това означава, че все още можем да използваме библиотеките на уеб сървъра, без да стартираме уеб сървъра. Това може да бъде полезно, например, ако искаме да ги използваме за писане на тестове или да използваме техните API в нашия собствен код.

4. Използване на свойствата на приложението

Използването на код за деактивиране на уеб сървъра е статична опция - това ще повлияе на нашето приложение, независимо къде го разполагаме. Но какво, ако искаме да създадем уеб сървъра при специфични обстоятелства?

В този случай можем да използваме свойствата на приложението Spring:

spring.main.web-application-type=none

Или използвайки еквивалентния YAML:

spring: main: web-application-type: none

Ползата от този подход е, че можем условно да активираме уеб сървъра . Използвайки Spring профили или условни условия, можем да контролираме поведението на уеб сървъра при различни внедрявания.

Например, бихме могли уеб сървърът да работи в разработка само за излагане на показатели или други пролетни крайни точки, като същевременно го държим деактивиран в производството от съображения за сигурност.

Имайте предвид, че някои по-ранни версии на Spring Boot са използвали логическо свойство, наречено web-среда, за да активират и деактивират уеб сървъра. С приемането както на традиционни, така и на реактивни контейнери в Spring Boot, имотът е преименуван и сега използва enum .

5. Заключение

Има много причини за създаването на Spring Boot приложения без уеб сървър. В този урок видяхме няколко начина за това. Всеки има свои плюсове и минуси, така че трябва да изберем подхода, който най-добре отговаря на нашите нужди.