Spring Boot upgrade

Module developers

Property renaming

A lot of Spring Boot properties have been renamed for consistency and to differ between Servlet and Webflux setups. See the Boot 2.0 migration guide for more information on the new properties.

Dependencies

  • artifact org.hibernate:hibernate-validator has been moved to org.hibernate.validator:hibernate-validator

    • you should revise your application dependency tree to avoid pulling it in twice, use org.hibernate.validator to ensure you have the latest version

Spring libraries

  • The behavior or spring.config.location has been changed, to get the old behavior spring.config.additional-location should be used instead: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#configuration-location

  • Spring ORM JPA uses Oracle12c dialect by default instead of 10

    • users might need to specify Oracle10gDialect as Hibernate dialect specifically

  • Several Spring Data Repository interfaces have been modified. Certain often used methods have been removed altogether and replaced with new alternatives (with a different signature).

    • findOne(id) has been replaced by findById(id) and now returns an Optional.

    • delete(List) has been replaced by deleteAll(Iterable). The same goes for save(List).

  • Spring data commons has renamed QueryDslPredicateExecutor to QuerydslPredicateExecutor (in the same package).

    • when using Cache annotations be aware that #result on an Optional returning method refers to the actual content of the Optional if it is not empty

  • Hibernate upgrades to 5.2, see migration guide: https://github.com/hibernate/hibernate-orm/blob/5.2/migration-guide.adoc

  • Date classes in json responses are not serialized as timestamps anymore, if you want the older behaviour, set spring.jackson.serialization.write_dates_as_timestamps: true

  • The behaviour of UriComponentsBuilder has been changed somewhat in Spring 5. Calls to .queryParam are now seen as literals and will not be url encoded anymore. If you want query parameters to be encoded you must use templated variables as seen on https://docs.spring.io/spring/docs/5.0.8.BUILD-SNAPSHOT/spring-framework-reference/web.html#web-uri-encoding. It is advisable to search your code for .queryParam( calls and change them to templated variables if they contain characters like: + or / (e.g. urls).