The first milestone of Spring Boot 2 has just got released this month and in this article we will point out different new features, enhancements and deprecations introduced in spring boot 2.0 along with the java version support, jetty and tomcat support, hibernate support and many more. So, let us get started.

System Requirements

Spring Boot 2 requires a minimum of java 8 and Spring Framework 5 as a baseline to get started and hence it provides extensive support for building reactive applications. The different embedded servlet containers that are supported out of the box are Tomcat 8.5, Jetty 9.4 and Undertow 1.3.. The minimum supported version of Hibernate is 5.2. Also, the minimum supported version of Gradle is raised to 3.4.All the deprecated classes, methods and properties in Spring Boot 1.5 has been removed from this release.

Spring Security

In this release Spring Security’s filter is now auto-configured with ASYNC , ERROR , and REQUEST dispatcher types. This aligns Spring Boot’s default configuration with Spring Security’s default configuration.

Spring Session

Spring Session’s filter is now auto-configured with ASYNC , ERROR , and REQUEST dispatcher types. This aligns Spring Boot’s default configuration with Spring Session’s default configuration.

Multipart configuration

To better reflect their Servlet-specific nature, the multipart spring.http.multipart. configuration properties have been renamed to spring.servlet.multipart. .

@ConditionalOnBean

@ConditionalOnBean now uses a logical AND rather than a logical OR when determining whether or not the condition has been met.

CRaSH

No support for the CRaSH remote shell since the CRaSH project itself is no longer actively supported.

WebFlux and WebFlux.fn Support

Spring Boot 2.0 provides a new starter for supporting the Reactive Spring web frameworks, for both annotation and functional based variants. s pring-boot-starter-webflux brings WebFlux itself, plus Reactor Netty as a default web engine ( spring-boot-starter-reactor-netty ).

Reactive controllers can be tested using @WebFluxTest that provides a similar support than @WebMvcTest for Spring MVC. In particular a WebTestClient is auto-configured.

Maven Configuration

Following is a sample pom file to get started with Spring Boot 2.

<?xml version= "1.0" encoding= "UTF-8" ?> <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelVersion> <groupId> com.devglan </groupId> <artifactId> spring-boot-example </artifactId> <version> 0.1.0-SNAPSHOT </version> <packaging> jar </packaging> <parent> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-parent </artifactId> <version> 2.0.0.M1 </version> <relativePath/> </parent> </properties> <dependencies> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter </artifactId> </dependency> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-test </artifactId> <scope> test </scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-maven-plugin </artifactId> </plugin> </plugins> </build> <repositories> <repository> <id> spring-snapshots </id> <name> Spring Snapshots </name> <url> https://repo.spring.io/snapshot </url> <snapshots> <enabled> true </enabled> </snapshots> </repository> <repository> <id> spring-milestones </id> <name> Spring Milestones </name> <url> https://repo.spring.io/milestone </url> <snapshots> <enabled> false </enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id> spring-snapshots </id> <name> Spring Snapshots </name> <url> https://repo.spring.io/snapshot </url> <snapshots> <enabled> true </enabled> </snapshots> </pluginRepository> <pluginRepository> <id> spring-milestones </id> <name> Spring Milestones </name> <url> https://repo.spring.io/milestone </url> <snapshots> <enabled> false </enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>

Gradle Configuration

buildscript { ext { springBootVersion = '2.0.0.M1' } repositories { mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } dependencies { classpath( "org.springframework.boot:spring-boot-gradle-plugin: ${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } dependencies { compile( 'org.springframework.boot:spring-boot-starter' ) testCompile( 'org.springframework.boot:spring-boot-starter-test' ) }

Conclusion

I hope this article served you that you were looking for. If you have anything that you want to add or share then please share it below in the comment section.