|
|
|
= Spring Boot
|
|
|
|
:docs: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference
|
|
|
|
|
|
|
|
^#**Build Status:{nbsp}**#^
|
|
|
|
image:https://build.spring.io/plugins/servlet/buildStatusImage/BOOT-PUB["Build Status", link="https://build.spring.io/browse/BOOT-PUB"]
|
|
|
|
|
|
|
|
Spring Boot makes it easy to create Spring-powered, production-grade applications and
|
|
|
|
services with absolute minimum fuss. It takes an opinionated view of the Spring platform
|
|
|
|
so that new and existing users can quickly get to the bits they need.
|
|
|
|
|
|
|
|
You can use Spring Boot to create stand-alone Java applications that can be started using
|
|
|
|
`java -jar` or more traditional WAR deployments. We also provide a command line tool
|
|
|
|
that runs spring scripts.
|
|
|
|
|
|
|
|
Our primary goals are:
|
|
|
|
|
|
|
|
* Provide a radically faster and widely accessible getting started experience for all
|
|
|
|
Spring development
|
|
|
|
* Be opinionated out of the box, but get out of the way quickly as requirements start to
|
|
|
|
diverge from the defaults
|
|
|
|
* Provide a range of non-functional features that are common to large classes of projects
|
|
|
|
(e.g. embedded servers, security, metrics, health checks, externalized configuration)
|
|
|
|
* Absolutely no code generation and no requirement for XML configuration
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
== Installation and Getting Started
|
|
|
|
The {docs}/htmlsingle/[reference documentation] includes detailed
|
|
|
|
{docs}/htmlsingle/#getting-started-installing-spring-boot[installation instructions]
|
|
|
|
as well as a comprehensive {docs}/htmlsingle/#getting-started-first-application[``getting
|
|
|
|
started''] guide. Documentation is published in {docs}/htmlsingle/[HTML],
|
|
|
|
{docs}/pdf/spring-boot-reference.pdf[PDF] and {docs}/epub/spring-boot-reference.epub[EPUB]
|
|
|
|
formats.
|
|
|
|
|
|
|
|
Here is a quick teaser of a Spring Boot application:
|
|
|
|
|
|
|
|
[source,java,indent=0]
|
|
|
|
----
|
|
|
|
import org.springframework.boot.*;
|
|
|
|
import org.springframework.boot.autoconfigure.*;
|
|
|
|
import org.springframework.stereotype.*;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
@Controller
|
|
|
|
@EnableAutoConfiguration
|
|
|
|
public class Example {
|
|
|
|
|
|
|
|
@RequestMapping("/")
|
|
|
|
@ResponseBody
|
|
|
|
String home() {
|
|
|
|
return "Hello World!";
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
|
SpringApplication.run(Example.class, args);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
----
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
== Getting help
|
|
|
|
Having trouble with Spring Boot, We'd like to help!
|
|
|
|
|
|
|
|
* Check the {docs}/htmlsingle/[reference documentation], especially the
|
|
|
|
{docs}/htmlsingle/#howto[How-to's] -- they provide solutions to the most common
|
|
|
|
questions.
|
|
|
|
* Learn the Spring basics -- Spring Boot is builds on many other Spring projects, check
|
|
|
|
the http://spring.io[spring.io] web-site for a wealth of reference documentation. If
|
|
|
|
you are just starting out with Spring, try one of the http://spring.io/guides[guides].
|
|
|
|
* Ask a questions - we monitor http://stackoverflow.com[stackoverflow.com] for questions
|
|
|
|
tagged with http://stackoverflow.com/tags/spring-boot[`spring-boot`].
|
|
|
|
* Report bugs with Spring Boot at https://github.com/spring-projects/spring-boot/issues.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
== Building from Source
|
|
|
|
You don't need to build from source to use Spring Boot (binaries in
|
|
|
|
http://repo.spring.io[repo.spring.io], but if you want to try out the latest and greatest,
|
|
|
|
Spring Boot can be http://maven.apache.org/run-maven/index.html[built with maven]
|
|
|
|
v3.0.5 or above.
|
|
|
|
|
|
|
|
[indent=0]
|
|
|
|
----
|
|
|
|
$ mvn clean install
|
|
|
|
----
|
|
|
|
|
|
|
|
NOTE: You may need to increase the amount of memory available to Maven by setting
|
|
|
|
a `MAVEN_OPTS` environment variable with the value `-Xmx512m -XX:MaxPermSize=128m`
|
|
|
|
|
|
|
|
_Also see link:CONTRIBUTING.adoc[CONTRIBUTING.adoc] if you wish to submit pull requests,
|
|
|
|
and in particular please fill out the
|
|
|
|
https://support.springsource.com/spring_committer_signup[Contributor's Agreement]
|
|
|
|
before your first change however trivial. (Or if you filed such an agreement already for
|
|
|
|
another project just mention that in your pull request.)_
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
== Modules
|
|
|
|
There are a number of modules in Spring Boot, here is a quick overview:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== spring-boot
|
|
|
|
The main library providing features that support the other parts of Spring Boot,
|
|
|
|
these include:
|
|
|
|
|
|
|
|
* The `SpringApplication` class, providing static convenience methods that make it easy
|
|
|
|
to write a stand-alone Spring Application. Its sole job is to create and refresh an
|
|
|
|
appropriate Spring `ApplicationContext`
|
|
|
|
* Embedded web applications with a choice of container (Tomcat or Jetty for now)
|
|
|
|
* First class externalized configuration support
|
|
|
|
* Convenience `ApplicationContext` initializers, including support for sensible logging
|
|
|
|
defaults
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== spring-boot-autoconfigure
|
|
|
|
Spring Boot can configure large parts of common applications based on the content
|
|
|
|
of their classpath. A single `@EnableAutoConfiguration` annotation triggers
|
|
|
|
auto-configuration of the Spring context.
|
|
|
|
|
|
|
|
Auto-configuration attempts to deduce which beans a user might need. For example, If
|
|
|
|
`HSQLDB` is on the classpath, and the user has not configured any database connections,
|
|
|
|
then they probably want an in-memory database to be defined. Auto-configuration will
|
|
|
|
always back away as the user starts to define their own beans.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== spring-boot-starters
|
|
|
|
Starters are a set of convenient dependency descriptors that you can include in
|
|
|
|
your application. You get a one-stop-shop for all the Spring and related technology
|
|
|
|
that you need without having to hunt through sample code and copy paste loads of
|
|
|
|
dependency descriptors. For example, if you want to get started using Spring and JPA for
|
|
|
|
database access just include the `spring-boot-starter-data-jpa` dependency in your
|
|
|
|
project, and you are good to go.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== spring-boot-cli
|
|
|
|
The Spring command line application compiles and runs Groovy source, making it super
|
|
|
|
easy to write the absolute minimum of code to get an application running. Spring CLI
|
|
|
|
can also watch files, automatically recompiling and restarting when they change.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== spring-boot-actuator
|
|
|
|
Spring Boot Actuator provides additional auto-configuration to decorate your application
|
|
|
|
with features that make it instantly deployable and supportable in production. For
|
|
|
|
instance if you are writing a JSON web service then it will provide a server, security,
|
|
|
|
logging, externalized configuration, management endpoints, an audit abstraction, and
|
|
|
|
more. If you want to switch off the built in features, or extend or replace them, it
|
|
|
|
makes that really easy as well.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== spring-boot-loader
|
|
|
|
Spring Boot Loader provides the secret sauce that allows you to build a single jar file
|
|
|
|
that can be launched using `java -jar`. Generally you will not need to use
|
|
|
|
`spring-boot-loader` directly, but instead work with the
|
|
|
|
link:spring-boot-tools/spring-boot-gradle-plugin[Gradle] or
|
|
|
|
link:spring-boot-tools/spring-boot-maven-plugin[Maven] plugin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
== Samples
|
|
|
|
Groovy samples for use with the command line application are available in
|
|
|
|
link:spring-boot-cli/samples[spring-boot-cli/samples]. To run the CLI samples type
|
|
|
|
`spring run <sample>.groovy` from samples directory.
|
|
|
|
|
|
|
|
Java samples are available in link:spring-boot-samples[spring-boot-samples] and should
|
|
|
|
be built with maven and run by invoking `java -jar target/<sample>.jar`. The following
|
|
|
|
java samples are provided:
|
|
|
|
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-simple[spring-boot-sample-simple]
|
|
|
|
-- A simple command line application
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-tomcat[spring-boot-sample-tomcat]
|
|
|
|
-- Embedded Tomcat
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-jetty[spring-boot-sample-jetty]
|
|
|
|
-- Embedded Jetty
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-actuator[spring-boot-sample-actuator]
|
|
|
|
-- Simple REST service with production features
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-actuator-ui[spring-boot-sample-actuator-ui]
|
|
|
|
-- A web UI example with production features
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-web-ui[spring-boot-sample-web-ui]
|
|
|
|
-- A thymeleaf web application
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-web-static[spring-boot-sample-web-static]
|
|
|
|
-- A web application service static files
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-batch[spring-boot-sample-batch]
|
|
|
|
-- Define and run a Batch job in a few lines of code
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-data-jpa[spring-boot-sample-data-jpa]
|
|
|
|
-- Spring Data JPA + Hibernate + HSQLDB
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-integration[spring-boot-sample-integration]
|
|
|
|
-- A spring integration application
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-profile[spring-boot-sample-profile]
|
|
|
|
-- example showing Spring's `@profile` support
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-traditional[spring-boot-sample-traditional]
|
|
|
|
-- shows more traditional WAR packaging (but also executable using `java -jar`)
|
|
|
|
* link:spring-boot-samples/spring-boot-sample-xml[spring-boot-sample-xml]
|
|
|
|
-- Example show how Spring Boot can be mixed with traditional XML configuration (we
|
|
|
|
generally recommend using Java `@Configuration` whenever possible)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
== Guides
|
|
|
|
The http://spring.io/[spring.io] site contains several guides that show how to use Spring
|
|
|
|
Boot step-by-step:
|
|
|
|
|
|
|
|
* http://spring.io/guides/gs/spring-boot/[Building an Application with Spring Boot] is a
|
|
|
|
very basic guide that shows you how to create a simple application, run it and add some
|
|
|
|
management services.
|
|
|
|
* http://spring.io/guides/gs/actuator-service/[Building a RESTful Web Service with Spring
|
|
|
|
Boot Actuator] is a guide to creating a REST web service and also shows how the server
|
|
|
|
can be configured.
|
|
|
|
* http://spring.io/guides/gs/convert-jar-to-war/[Converting a Spring Boot JAR Application
|
|
|
|
to a WAR] shows you how to run applications in a web server as a WAR file.
|