Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
© 2013 Spring, by Pivotal
Zero Effort Spring: An intro to Spring Boot
Scott Deeg, Sr. Field Engineer, Pivotal
sdeeg@gopivotal.com
22
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
33
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
44
What’s New in Spring
55
Spring vs JEE … ready … FIGHT!
NOT going there! :-)
66
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)
77
Big Spring Diagram with Boot
WEB
Controllers, REST,
WebSocket
INTEGRATION
Channels, Adapters,
Filters, Transformers
BATCH
Jobs, Steps,
Readers, Writers
BIG DATA
Ingestion, Export,
Orchestration, Hadoop
DATA
NON-RELATIONALRELATIONAL
CORE
GROOVYFRAMEWORK SECURITY REACTOR
GRAILS
Full-stack, Web
XD
Stream, Taps, Jobs
BOOT
Bootable, Minimal, Ops-Ready
88
Spring Boot
Intro
1010
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?)
1111
Getting Started REALLY Quickly
app.groovy:
@Controller
class ThisWillActuallyRun
{
@RequestMapping("/")
@ResponseBody
String home() { return "Hello World!" }
}
then
$ spring run app.groovy
1212
Demo
Quick Start
1313
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 …
1414
Demo
Doing it in Java
1616
Spring Boot Modules
Boot
Autoconfigure
Starters
CLI
Actuator
Tools
Samples
1717
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.
1818
Demo
Change the app behavior by changing parameters
1919
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
2121
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)
2222
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).
2323
Demo
Show me that!
2424
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
2525
Does Anybody Use This For Real?
We do
• Spring
Boot app
• Thymeleaf
UI
• Hosted on
Cloud
Foundry
2626
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
© 2013 Spring, by Pivotal
Thanks!
2828
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

More Related Content

Spring boot

  • 1. © 2013 Spring, by Pivotal Zero Effort Spring: An intro to Spring Boot Scott Deeg, Sr. Field Engineer, Pivotal sdeeg@gopivotal.com
  • 2. 22 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
  • 3. 33 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
  • 5. 55 Spring vs JEE … ready … FIGHT! NOT going there! :-)
  • 6. 66 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)
  • 7. 77 Big Spring Diagram with Boot WEB Controllers, REST, WebSocket INTEGRATION Channels, Adapters, Filters, Transformers BATCH Jobs, Steps, Readers, Writers BIG DATA Ingestion, Export, Orchestration, Hadoop DATA NON-RELATIONALRELATIONAL CORE GROOVYFRAMEWORK SECURITY REACTOR GRAILS Full-stack, Web XD Stream, Taps, Jobs BOOT Bootable, Minimal, Ops-Ready
  • 9. 1010 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. 1111 Getting Started REALLY Quickly app.groovy: @Controller class ThisWillActuallyRun { @RequestMapping("/") @ResponseBody String home() { return "Hello World!" } } then $ spring run app.groovy
  • 12. 1313 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 …
  • 15. 1717 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.
  • 16. 1818 Demo Change the app behavior by changing parameters
  • 17. 1919 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
  • 18. 2121 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)
  • 19. 2222 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).
  • 21. 2424 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
  • 22. 2525 Does Anybody Use This For Real? We do • Spring Boot app • Thymeleaf UI • Hosted on Cloud Foundry
  • 23. 2626 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
  • 24. © 2013 Spring, by Pivotal Thanks!
  • 25. 2828 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