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

Zero Effort Spring:: An Intro To Spring Boot

Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
144 views

Zero Effort Spring:: An Intro To Spring Boot

Copyright
© © All Rights Reserved
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


sdeeg@gopivotal.com

© 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