Hello friends Welcome to Spring Boot Tutorial, today I am going to discuss one of the latest innovation by the Spring Team (Pivotal Team) is Spring Boot, oops… sorry..friends yes I know I am late for this discussion right now but it is not too late for spring boot because this is actually time for major adoption of Spring Boot for scratch project in the spring framework 🙂.
Spring Team has released one of major innovation on the top of the existing Spring Framework is Spring Boot. It is a completely new project from Pivotal Team (The Spring Team). Spring Boot is their latest innovation to keep up to date with the changing technology needs. The primary motivation behind developing Spring Boot is to simplify the process for configuring and deploying the spring applications. This Spring Boot Tutorial gives a complete introduction about Spring Boot.
Spring Boot offers a new paradigm for developing Spring applications with minimal friction. With Spring Boot, you’ll be able to develop Spring applications with more agility and be able to focus on addressing your application’s functionality needs with minimal (or possibly no) thought of configuring Spring itself. It uses completely new development model to make Java Development very easy by avoiding some tedious development steps and boilerplate code and configuration.
Let’s see the primary goals of the Spring Boot in this Spring Boot Tutorial.
@RestController class ThisWillActuallyRun { @RequestMapping("/") String home() { return "Hello World!" } }
Run it as follows:
$ spring run app.groovy
<?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.doj</groupId> <artifactId>my-spring-boot-project</artifactId> <version>0.0.1-SNAPSHOT </version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
package hello; import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
$ mvn package $ java -jar target/ my-spring-boot-project-0.0.1-SNAPSHOT.jar
Name
|
Description
|
Pom
|
spring-boot-starter-test | Starter for testing Spring Boot applications with libraries including JUnit, Hamcrest and Mockito | Pom |
spring-boot-starter-mobile | Starter for building web applications using Spring Mobile | Pom |
spring-boot-starter-social-twitter | Starter for using Spring Social Twitter | Pom |
spring-boot-starter-cache | Starter for using Spring Framework’s caching support | Pom |
spring-boot-starter-activemq | Starter for JMS messaging using Apache ActiveMQ | Pom |
spring-boot-starter-jta-atomikos | Starter for JTA transactions using Atomikos | Pom |
spring-boot-starter-aop | Starter for aspect-oriented programming with Spring AOP and AspectJ | Pom |
spring-boot-starter-web | Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container | Pom |
spring-boot-starter-data-elasticsearch | Starter for using Elasticsearch search and analytics engine and Spring Data Elasticsearch | Pom |
spring-boot-starter-jdbc | Starter for using JDBC with the Tomcat JDBC connection pool | Pom |
spring-boot-starter-batch | Starter for using Spring Batch, including HSQLDB in-memory database | Pom |
spring-boot-starter-social-facebook | Starter for using Spring Social Facebook | Pom |
spring-boot-starter-web-services | Starter for using Spring Web Services | Pom |
spring-boot-starter-jta-narayana | Spring Boot Narayana JTA Starter | Pom |
spring-boot-starter-thymeleaf | Starter for building MVC web applications using Thymeleaf views | Pom |
spring-boot-starter-mail | Starter for using Java Mail and Spring Framework’s email sending support | Pom |
spring-boot-starter-jta-bitronix | Starter for JTA transactions using Bitronix | Pom |
spring-boot-starter-data-mongodb | Starter for using MongoDB document-oriented database and Spring Data MongoDB | Pom |
spring-boot-starter-validation | Starter for using Java Bean Validation with Hibernate Validator | Pom |
spring-boot-starter-jooq | Starter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbc | Pom |
spring-boot-starter-redis | Starter for using Redis key-value data store with Spring Data Redis and the Jedis client. Deprecated as of 1.4 in favor of spring-boot-starter-data-redis | Pom |
spring-boot-starter-data-cassandra | Starter for using Cassandra distributed database and Spring Data Cassandra | Pom |
spring-boot-starter-hateoas | Starter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS | Pom |
spring-boot-starter-integration | Starter for using Spring Integration | Pom |
spring-boot-starter-data-solr | Starter for using the Apache Solr search platform with Spring Data Solr | Pom |
spring-boot-starter-freemarker | Starter for building MVC web applications using Freemarker views | Pom |
spring-boot-starter-jersey | Starter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web | Pom |
spring-boot-starter | Core starter, including auto-configuration support, logging and YAML | Pom |
spring-boot-starter-data-couchbase | Starter for using Couchbase document-oriented database and Spring Data Couchbase | Pom |
spring-boot-starter-artemis | Starter for JMS messaging using Apache Artemis | Pom |
spring-boot-starter-cloud-connectors | Starter for using Spring Cloud Connectors which simplifies connecting to services in cloud platforms like Cloud Foundry and Heroku | Pom |
spring-boot-starter-social-linkedin | Stater for using Spring Social LinkedIn | Pom |
spring-boot-starter-velocity | Starter for building MVC web applications using Velocity views. Deprecated since 1.4 | Pom |
spring-boot-starter-data-rest | Starter for exposing Spring Data repositories over REST using Spring Data REST | Pom |
spring-boot-starter-data-gemfire | Starter for using GemFire distributed data store and Spring Data GemFire | Pom |
spring-boot-starter-groovy-templates | Starter for building MVC web applications using Groovy Templates views | Pom |
spring-boot-starter-amqp | Starter for using Spring AMQP and Rabbit MQ | Pom |
spring-boot-starter-hornetq | Starter for JMS messaging using HornetQ. Deprecated as of 1.4 in favor of spring-boot-starter-artemis | Pom |
spring-boot-starter-ws | Starter for using Spring Web Services. Deprecated as of 1.4 in favor of spring-boot-starter-web-services | Pom |
spring-boot-starter-security | Starter for using Spring Security | Pom |
spring-boot-starter-data-redis | Starter for using Redis key-value data store with Spring Data Redis and the Jedis client | Pom |
spring-boot-starter-websocket | Starter for building WebSocket applications using Spring Framework’s WebSocket support | Pom |
spring-boot-starter-mustache | Starter for building MVC web applications using Mustache views | Pom |
spring-boot-starter-data-neo4j | Starter for using Neo4j graph database and Spring Data Neo4j | Pom |
spring-boot-starter-data-jpa | Starter for using Spring Data JPA with Hibernate | Pom |
Name
|
Servlet Version
|
Java Version
|
Tomcat 8
|
3.1
|
Java 7+
|
Tomcat 7
|
3.0
|
Java 6+
|
Jetty 9
|
3.1
|
Java 7+
|
Jetty 8
|
3.0
|
Java 6+
|
Undertow 1.1
|
3.1
|
Java 7+
|
Spring Boot includes auto-configuration support for the following templating engines mention in this Spring Boot Tutorial.
JSPs should be avoided if possible; there are several known limitations when using them with embedded servlet containers. If you are using any of the above template engines, spring boot will automatically pick the templates from src/main/resources/templates.
The Spring Framework provides support for transparently adding caching to an application. At its core, the abstraction applies to cache to methods, reducing thus the number of executions based on the information available in the cache. The caching logic is applied transparently, without any interference to the invoker. Let’s see the code as mention below here Spring Boot Tutorial.
import javax.cache.annotation.CacheResult; import org.springframework.stereotype.Component; @Component public class MathService { @CacheResult public int computePiDecimal(int i) { // ... } }
In this Spring Boot Tutorial, I have mentioned the following list that Spring Boot tries to detect the following providers (in this order):
Spring MVC lets you create special @Controller or @RestController beans to handle incoming HTTP requests. Methods in your controller are mapped to HTTP using @RequestMapping annotations.
In this Spring Boot Tutorial, here is the one good video on Spring Book introduction by Josh Long
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…