Zero Effort Spring:: An Intro To Spring Boot
Zero Effort Spring:: An Intro To Spring Boot
3
What’s New in Spring
4
Spring vs JEE … ready … FIGHT!
5
Spring 4.0 Highlights
Java/EE
• Java 8
• JSR-310 Date/Time API
• JSR-236 Concurrency Utils
• JSR-356 WebSocket
• Servlet 3.1
• Bean Validation 1.1
• JPA 2.1
• JTA 1.2
• JMS 2.0
Spring iO
(Large feature set, and getting larger)
6
Big Spring Diagram with Boot
XD BOOT GRAILS
DATA
RELATIONAL NON-RELATIONAL
CORE
7
Spring Boot
Intro
8
Goals
Provide a radically faster and widely accessible getting started
experience
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
V0.5.0M4
10
Getting Started REALLY Quickly
app.groovy:
@Controller
class ThisWillActuallyRun
{
@RequestMapping("/")
@ResponseBody
String home() { return "Hello World!" }
}
then
$ spring run app.groovy
11
Demo
Quick Start
12
What Just Happened?
SpringApplication: convenient way to write a main() method that
loads a Spring context
@EnableAutoConfiguration: optional annotation that adds stuff to
your context, including...
EmbeddedServletContainerFactory: added to your context if a
server is available on the classpath
CommandLineRunner: a hook to run application-specific code after
the context is created
JarLauncher was added to the JAR file
13
Demo
Doing it in Java
14
Spring Boot Modules
CLI
Starters
Autoconfigure
Boot
Actuator
Tools
Samples
16
Binding to Command Line Arguments
SpringApplication binds its own bean properties to command line
arguments, and then adds them to the Spring Environment, e.g.
$ java -jar target/*.jar --server.port=9000
Externalize Config
• Just put application.properties in your classpath, e.g.
application.properties
server.port: 9000
18
Add a Thymeleaf UI
Add Thymeleaf to the classpath and see it render a view
Spring Boot Autoconfigure has added all the boilerplate stuff
Common configuration options via spring.thymeleaf.*, e.g.
spring.thymeleaf.prefix:classpath:/templates/ (location of templates)
spring.tjymeleaf.cache:true (set to false to reload templates when
changed)
Extend and override:
add Thymeleaf IDialect beans add thymeleafViewResolver add
SpringTemplateEngine add defaultTemplateResolver
19
Currently Available Auto-configured Behavior
Embedded servlet container (Tomcat or Jetty) DataSource and
JdbcTemplate
JPA
Spring Data JPA (scan for repositories) Thymeleaf
Batch processing
Reactor for events and async processing Actuator features
(Security, Audit, Metrics, Trace)
21
The Actuator
Adds common non-functional features to your application and
exposes MVC endpoints to interact with them.
Security
Secure endpoints: /metrics, /health, /trace, /dump,
/shutdown, /beans Audit
/info
If embedded in a web app or web service can use the same port or a
different one (and a different network interface).
22
Demo
Show me that!
23
Other
Security
• Use Actuator
• Can also use Spring Security
Logging
• Spring Boot provides default configuration files for 3 common logging
frameworks: logback, log4j and java.util.logging
• Starters (and Samples) use logback
External configuration and classpath influence runtime behaviour
LoggingApplicationContextInitializer sets it all up
24
Does Anybody Use This For Real?
We do
• Spring
Boot app
• Thymeleaf
UI
• Hosted on
Cloud
Foundry
25
Links
Spring
• https://projects.spring.io/spring-boot
• https://github.com/spring-projects/spring-boot (on Github)
• http://spring.io/blog/2013/09/20/contributing-to-spring-boot-with-a-pull-request
26
Thanks!
Download now:
• springsource.org/spring-tool-suite-download (eclipse plugin)
• springsource.org/download/community (zip)
• springsource.org/spring-framework#maven (maven)