angle-left

Spring Boot: java 8 → Java 11

Доброе утро!

В связи с изменениями в политике Oracle по отношению к java 8, выходом LTS-выпуска java 11 и разваливающимся приложением при попытке "в тупую" запустить его на новой джаве, я решил написать данную заметку по миграции.

Что было: приложение, собираемое maven, spring-boot версии 1.5.6.RELEASE, java.version 1.8.

Теперь о том, что стало.

Java 11 полноценно поддерживается в spring-boot 2.1.x. На момент написания статьи актуальная версия — 2.1.6.RELEASE. Таким образом, в pom.xml появляется следующий блок:

     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.1.6.RELEASE</version>
         <relativePath/>
     </parent>

spring-boot-starter-parent сам разберётся в версиях зависимостей, подтянув пятый spring вместо четвёртого.

Кроме того, предлагаю обновить maven-compiler-plugin до 3.8.1 и maven-surefire-plugin до 2.22.2. Они вполне хорошо себя чувствуют в одиннадцатой джаве.

Также стоит отметить, что если используется spring-data с hibernate и javax.validation.validation-api, то последняя пара теряет совместимость. Таким образом, уместна подобная правка:

         <dependency>
             <groupId>javax.validation</groupId>
             <artifactId>validation-api</artifactId>
-            <version>1.1.0.Final</version>
+            <version>2.0.1.Final</version>
         </dependency>

Ну и не забываем сменить java.version на 11.

 

Теперь стоит попробовать это собрать в при помощи java 11. Вероятно, у вас не получилось. Часть классов сменила пакеты. Пример:

-import org.springframework.boot.web.support.SpringBootServletInitializer;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

Устранить это легко — ищем документацию по spring boot 2.1.6 на этот класс, смотрим новое имя пакета, правим. В моём случае этого оказалось достаточно.

 

Когда всё собралось и запустилось, в логах можно заметить следующее предупреждение:

15:50:28.839 [WARN ] aWebConfiguration$JpaWebMvcConfiguration:225  - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning

Это сигнализирует о включенности настройки hibernate Open Session In View. Зачем оно надо, чем хорошо и чем плохо рассказывается, например, здесь. Для себя мы проблемы LazyInitializationException давно решили при помощи @EntityGraph над нужными запросами, так что данная опция акутальной в проектах не является. Отключить её можно добавлением application.properties строки spring.jpa.open-in-view=false.

На этом всё, буду обновлять данную статью, если столкнусь ещё с какими-то проблемами при миграции spring-boot приложений на java 11.

Работаю в компании Tune-IT, разрабатываю софт. Могу писать на perl. Могу не писать. Могу клаву так заныкать, что фиг найдёшь.

Что умеет ваш портал?

Наш портал уже "из коробки" умеет очень многое. Сразу же после установки вы сможете использовать следующие компоненты:

Справочник сотрудников

Удобный агрегатор контактной информации, адресов и телефонов всех сотрудников компании.

Интеграция с IP-телефонией

Вы можете позвонить любому сотруднику, просто кликнув по иконке на его карточке в справочнике.

Встроенный клиент Webmail

Все ваши сотрудники могут пользоваться корпоративной электронной почты без необходимости настройки почтового клиента.

Вики-справочник

Централизованное хранилище для всей информации, необходимой сотрудникам для решения их повседневных задач.

Интеграция с сервером печати

Печать и сканирование документов через прямо веб-интерфейс портала - без необходимости установки драйверов принтера на компьютеры сотрудников.

Файловое хранилище

В портал встроено файловое хранилище с поддержкой версионирования файлов. Каждый пользователь имеет свой домашний каталог, доступный как через веб-интерфейс, так и через проводник Windows.

Мультимедиа-возможности

Встроенные фото- и видеогалерея позволяют просматривать фотографии и видео прямо на портале.

Социальные коммуникации

В портал встроена полноценная корпоративная социальная сеть. Сотрудники могут обмениваться сообщениями, файлами и общаться в форуме.

Кроме того, вы можете воспользоваться любым из сотен плагинов, доступных на Liferay Marketplace.

Сколько это будет стоить?

Как уже было сказано выше, вы можете использовать наш интранет-портал абсолютно бесплатно и без каких-либо ограничений на количество пользователей или параллельно запущенных сессий. Единственное, чего вы не получите в бесплатной лицензии - это техническая поддержка.

Существует несколько уровней технической поддержки, отличающихся друг от друга SLA и стоимостью.

  Free Basic 24x7
Количество пользователей
Количество сессий
Email hotline нет есть есть
Phone hotline нет нет есть
Обращений в месяц - 10
Режим технической поддержки - 8x5 24x7
Стоимость Бесплатно 20 000 /месяц 100 000 /месяц

 

OK, мне всё это нравится. Где я могу скачать ваш портал?

В настоящий момент портал находится в стадии бета-тестирования. Когда мы закончим, ссылка на скачивание и инструкция по установке появятся вот здесь

Если вы заинтересовались решением, или хотите поучаствовать в бета-тестировании - пожалуйста, напишите нам!