0% found this document useful (0 votes)
149 views

Zero Effort Spring:: An Intro To Spring Boot

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
149 views

Zero Effort Spring:: An Intro To Spring Boot

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 25

Zero Effort Spring: An intro to Spring Boot

Scott Deeg, Sr. Field Engineer, Pivotal


[email protected]

© 2013 Spring, by Pivotal


Agenda

Goal: Introduce developers to Spring Boot, an opinionated way to rapidly


build production grade Spring applications quickly and with minimal fuss.

 Introduction to Spring Boot


• Where it fits in the Spring eco system
• Goals, high level features, etc.
 Demo: Quick Start
 Behind the scenes
 More demos, more Boot
 End bits (links and such)

 ToDo: Adding new features to Boot


2
What is Pivotal?
 Vmware and EMC spin out
• vFabric from vmware
• Greenplum MPP DB and Hadoop from EMC
• Agile development acquisitions Pivotal Labs and Xtreme Labs
 Paul Maritz CEO
• Former CEO vmware.
 Custodian of various OSS projects including Spring
• and RabbitMQ, Redis, CloudFondry, Groovy/Grails, …
 Commercial interests in Big/Fast Data, PaaS, Enterprise tooling
• Spring is an enabling technology

3
What’s New in Spring

4
Spring vs JEE … ready … FIGHT!

NOT going there! :-)

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

Stream, Taps, Jobs Bootable, Minimal, Ops-Ready Full-stack, Web

INTEGRATION BATCH BIG DATA WEB

Channels, Adapters, Jobs, Steps, Ingestion, Export, Controllers, REST,


Filters, Transformers Readers, Writers Orchestration, Hadoop WebSocket

DATA

RELATIONAL NON-RELATIONAL

CORE

FRAMEWORK SECURITY GROOVY REACTOR

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

(Question: What about Roo?)

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

 It’s beginning to look a lot like Java …

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

 Use YAML (if you must)


• Just put application.yml in your classpath

 Both properties and YAML add entries with period-separated paths


to the Spring Environment.
17
Demo
Change the app behavior by changing parameters

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

Random Boot Blogs


• http://fbflex.wordpress.com/2013/10/01/a-spring-boot-generator-for-yeoman

26
Thanks!

© 2013 Spring, by Pivotal


Learn More. Stay Connected.

Download now:
• springsource.org/spring-tool-suite-download (eclipse plugin)
• springsource.org/download/community (zip)
• springsource.org/spring-framework#maven (maven)

Monthly Newsletter: springsource.org/news-events


Twitter: twitter.com/springsource
YouTube: youtube.com/user/SpringSourceDev
RSS Feed: feeds.feedburner.com/springsource/OEVE
LinkedIn: springsource.org/linkedin
28

You might also like