SlideShare a Scribd company logo
Composable Software Architecture
with Spring
Sam Brannen
@sam_brannen
Java Breeze | Odessa, Ukraine | 18 May 2013
2
Sam Brannen
•  Spring and Java Consultant @ Swiftmind (Zurich)
•  Developing Java for over 15 years
•  Spring Framework Core Committer since 2007
•  Spring Trainer
•  Presenter on Spring, Java, OSGi, and testing
3
Swiftmind
Your experts for Enterprise Java
Areas of expertise
•  Spring Framework
•  Java EE
•  OSGi
•  Agile Methodologies
•  Software Engineering Best Practices
Headquarters
•  Zurich, Switzerland
•  @swiftmind
•  http://www.swiftmind.com
4
Agenda
•  Enterprise Applications
•  What we’ve learned as a community
•  Composable Software Architecture
•  Java EE + Open Source
•  How Spring fits into the picture
•  Spring 4.0 Roadmap
5
Modern Enterprise Applications
6
What does "enterprise" mean?
Enterprise software is software used in organizations, such
as in a business or government, as opposed to software
used by individuals. Enterprise software is an integral part of
a (computer based) Information System.
-Wikipedia
7
OK, sure... but what does that mean to developers?
8
Furthermore …
Enterprise software typically has interfaces to other
enterprise software and is centrally managed.
- Wikipedia
9
Ahh, now we’re getting somewhere!
10
Typical Enterprise Application
•  Supports enterprise business process
•  Is relatively large
•  Should be robust, scalable, and offer high performance
•  Does not run in isolation
•  Interacts with multiple external systems and services …
11
RDBMS
12
LDAP
13
SMTP
14
FTP, FTP, SSH
15
JMS, AMQP
16
SOAP Web Services, REST Web Services
17
Web and Mobile clients, etc.
18
But each of these has its own APIs and potentially different
protocols and exchange formats!
19
So how should we design such enterprise applications?
20
What we’ve learned as a community
21
Things to avoid
•  Tight coupling to the container or frameworks
•  Tight coupling to protocols and exchange formats in our
service layer
•  Monolithic deployment units
•  Anemic domain models
•  Bloated transaction scripts
•  Code tangling and scattering
22
What we should aim for
•  Modularity
•  Layered architecture with
–  a canonical domain model
–  a dedicated orchestration layer
•  Separation of concerns
•  Externalized environment-specific configuration
•  Design for testability
23
How we achieve it
•  OOA / OOD / OOP
•  (@)POJO Programming Model
•  Marshaling and automatic type conversion
•  Dependency Injection (DI)
•  Inversion of Control (IoC)
•  AOP / Interceptor Model
•  Automated out-of-container testing and CI
24
Composable Software Architecture
25
Composability
Composability is a system design principle that deals with
the inter-relationships of components. A highly
composable system provides recombinant components that
can be selected and assembled in various combinations
to satisfy specific user requirements. (Wikipedia)
•  Self-contained (modular)
•  Typically stateless
26
But it's not just about modularity and statelessness.
27
It's a different way of thinking,
28
a different way of designing,
29
a different kind of architecture,
30
with new possibilities…
31
if done right.
32
Think about different ways the same components can be...
33
reused…
34
repurposed…
35
and composed…
36
to meet different business requirements
37
or to interact with different systems.
38
Composable Architecture Visualized
Infrastructure
Repository
Service
Orchestration
DomainModel
39
How is this new?
•  To be honest, it’s not really new,
–  if you just look at the diagram…
•  The web tier or presentation layer has always effectively
been a type of orchestration layer.
•  The difference is that we re-use all of the other layers
with multiple types of orchestration simultaneously!
40
Orchestration Layer
•  Lies at the heart of a composable architecture
•  Orchestrates all interactions with the service layer
–  potentially interacting directly with repositories (e.g.,
in batch processing)
•  Handles external protocols
•  Converts from external formats into our canonical domain
model
•  Thereby… allowing application services to be composed in
a multitude of different ways!
41
Common Types of Orchestration
•  Web controller
–  HTTP, HTTPS :: HTTP request and response
•  REST or SOAP Web Service endpoint
–  HTTP/HTTPS :: XML, JSON, binary, …
•  JMS or AMQP listener (or message listener container)
–  JMS Message types, domain entities, …
•  Messaging endpoint (e.g., gateway + service activator)
–  Web service, FTP, file system, email, …
•  Batch component (e.g., reader, writer, processor)
–  Files, SQL, …
42
Java EE + Open Source
43
What's good about Java EE?
•  Set of common enterprise standards for Java
•  Consistent across containers and vendors (mostly)
•  Great tooling and build support
•  Catching up with innovation in open source
–  Hibernate à JPA
–  Spring DI / Guice / Seam à CDI
44
Java EE is a one stop shop
45
which is great…
46
if everything you need is in that shop.
47
But if Java EE doesn’t offer what you need…
48
use open source frameworks
49
either in a Java EE container
50
or in an alternative light-weight container.
51
Open Source Frameworks fill the Gaps
•  Web frameworks and UI components
•  NoSQL
•  Big Data
•  AMQP
•  Mobile
•  Social Media
•  Batch
•  Enterprise Integration (EAI)
•  …
52
How Spring fits into the picture
53
Core Spring (Framework)
•  DI + IoC + AOP
•  Declarative
–  transactions, caching, validation, formatting
•  Spring MVC and REST
•  JMS Message Listener Container
–  Message-driven POJOs
•  Testing framework
54
Dependency Injection and Inversion of Control collectively
decouple application code from the deployment environment
55
DI + IoC à POJO Programming Model
56
POJO Programming Model + AOP à Composability
57
Spring is an Ecosystem
•  Spring MVC
•  Spring REST
•  Spring Web Flow
•  Spring Security
•  Spring Web Services
•  Spring Batch
•  Spring Integration
•  Spring Data
•  Spring Mobile
•  Spring Social
•  Spring AMQP
•  …
58
Spring MVC and REST
•  @Controller annotated components serve as MVC
handler methods and REST endpoints
•  Automatic type conversion
•  Data binding to domain entities
•  Marshaling
–  JSON, JAXB, Castor, XMLBeans, JiBX, XStream, …
•  Handler methods and endpoints orchestrate the service
layer
59
Spring Web Services
•  @Endpoint annotated components serve as SOAP Web
Service endpoints
•  Marshaling (OXM)
–  JAXB, Castor, XMLBeans, JiBX, XStream
•  Endpoint methods orchestrate the service layer
60
Spring JMS
•  Message listener containers (MLC) support
–  JMS MessageListener API
–  Message-driven POJOs
•  Automatic type conversion from JMS Message types into
–  String, Map, Object, byte[]
–  Customer converters also supported
•  Marshaling
–  Spring OXM, customer solutions, etc.
•  MLC orchestrates the service layer
61
Spring Integration
•  Inbound and outbound messaging gateways
–  Handle external protocols and APIs
–  Too many to mention here!
•  Automatic type conversion for method arguments and
return types in Service Activators
•  Marshaling and custom type conversion also supported
•  The service layer can be orchestrated via declarative
configuration (e.g., service activators in XML)
62
And the list goes on …
63
Composable Architecture – with Spring
Infrastructure
Repository
Service
DomainModel
Spring REST
Spring MVC
Spring JMS
Spring Integration
Spring Batch
Spring WS
64
Composable Architecture Checklist
þ  Modularity
þ  Layered architecture
þ Canonical Domain Model
þ Orchestration: web, batch, integration, web services
þ Service
þ Repository
þ Infrastructure
þ  POJO programming model
þ  Separation of concerns
þ  Externalized environment-specific configuration
þ  Testability, automated testing, and CI
65
Roadmap for Spring 4.0
66
1st Class Support for Java 8 based apps
•  Language features such as lambda expressions
–  for callbacks with templates
–  for concurrent execution
•  think fork/join, map/reduce, etc.
•  APIs such as JSR-310 Date and Time
–  Alongside Spring’s existing support for JodaTime
67
Configuring Spring with Groovy 2
•  Configuring and implementing Spring-style applications
using Groovy 2.x
•  Groovy-based bean definitions
•  Groovy as the language of choice for an entire
application, as a direct and straightforward alternative to
Java source files
•  Groovy 2.0's static compilation support completes the
picture here
68
Support for Key Java EE 7 Technologies
•  JMS 2.0
•  JPA 2.1
•  Bean Validation 1.1
•  Servlet 3.1
•  And fully covering JCache 1.0
69
Enabling WebSocket-style Architectures
•  Support for JSR-356 compliant runtimes
•  Also supporting related technologies
70
Fine-grained Eventing and Messaging
•  Introducing fine-grained eventing and messaging within
the application
•  Building on our existing application event mechanism
•  Aligned with our JMS message listener mechanism
71
Pruning and Dependency Upgrades
•  Removing a variety of deprecated packages across the
framework
–  See Spring Framework 3.2's deprecations!
•  Raising minimum dependencies to Java 6+
–  Java SE 6+ and Java EE 6+
–  with some compromises for EE 5++ servers
72
In Closing…
73
Further Resources
•  Spring Projects
–  http://www.springsource.org/projects
–  Reference Manuals
–  Javadoc
•  Spring Forums
–  http://forum.springframework.org
•  Spring JIRA
–  http://jira.springframework.org
•  GitHub Repositories
–  https://github.com/SpringSource
74
Blogs
•  Swiftmind Team Blog
–  http://www.swiftmind.com/blog/
•  SpringSource Team Blog
–  http://blog.springsource.com/
75
Q & A
Sam Brannen
twitter: @sam_brannen
www.slideshare.net/sbrannen
www.swiftmind.com

More Related Content

PPTX
Azure Cost Management
PPTX
App Modernization with Microsoft Azure
PDF
Azure DevOps Presentation
PDF
Best Practices with Azure Kubernetes Services
PPTX
1. 아키텍쳐 설계 프로세스
PPTX
Understanding cloud with Google Cloud Platform
PPTX
Google Cloud Certification | Google Cloud Platform Certification Path | GCP T...
PDF
Ansible
Azure Cost Management
App Modernization with Microsoft Azure
Azure DevOps Presentation
Best Practices with Azure Kubernetes Services
1. 아키텍쳐 설계 프로세스
Understanding cloud with Google Cloud Platform
Google Cloud Certification | Google Cloud Platform Certification Path | GCP T...
Ansible

What's hot (20)

PDF
DevOps maturity models Knowit and DASA
PPTX
Lets talk about: Azure Kubernetes Service (AKS)
PPTX
Introduction to Kubernetes
PPTX
Azure Cloud Governance
PDF
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
PPTX
Introduction to KubeSphere and its open source ecosystem
PPTX
About DevOps in simple steps
PPTX
Introduction to Docker - 2017
PPTX
Terraform
PDF
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
PDF
SpringOne Tour: Spring Boot 3 and Beyond
PDF
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
PDF
Introduction to Kubernetes Workshop
PDF
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
PDF
Red Hat OpenShift on Bare Metal and Containerized Storage
PDF
Cloud native-apps-architectures
PPTX
Microsoft Azure Technical Overview
PDF
Introduction of Kubernetes - Trang Nguyen
PPTX
Azure Migrate
PPTX
Accelerating with Ansible
DevOps maturity models Knowit and DASA
Lets talk about: Azure Kubernetes Service (AKS)
Introduction to Kubernetes
Azure Cloud Governance
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Introduction to KubeSphere and its open source ecosystem
About DevOps in simple steps
Introduction to Docker - 2017
Terraform
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
SpringOne Tour: Spring Boot 3 and Beyond
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
Introduction to Kubernetes Workshop
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
Red Hat OpenShift on Bare Metal and Containerized Storage
Cloud native-apps-architectures
Microsoft Azure Technical Overview
Introduction of Kubernetes - Trang Nguyen
Azure Migrate
Accelerating with Ansible
Ad

Viewers also liked (15)

PPTX
Software architecture also needs agile
PPTX
Software Architecture taxonomies - Integration patterns
PDF
Refactoring for Software Architecture Smells
PPTX
Software architecture
PPTX
Basics of Software Architecture for .NET Developers
PPT
User Driven Software Architecture
PPTX
Software Architecture Patterns
PDF
Software Architecture: Design Decisions
PDF
Principles of software architecture design
PPTX
Software Architecture vs design
PDF
Software Architecture: views and viewpoints
PPTX
Fundamentals Of Software Architecture
PDF
Practices of Good Software Architects
PDF
Software Architecture for Cloud Infrastructure
PPT
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Software architecture also needs agile
Software Architecture taxonomies - Integration patterns
Refactoring for Software Architecture Smells
Software architecture
Basics of Software Architecture for .NET Developers
User Driven Software Architecture
Software Architecture Patterns
Software Architecture: Design Decisions
Principles of software architecture design
Software Architecture vs design
Software Architecture: views and viewpoints
Fundamentals Of Software Architecture
Practices of Good Software Architects
Software Architecture for Cloud Infrastructure
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Ad

Similar to Composable Software Architecture with Spring (20)

PPTX
Introduction to Spring Framework
ODP
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
PDF
Spring Framework 4.0 to 4.1
PPT
Spring - a framework written by developers
PDF
JAX 2013: Modern Architectures with Spring and JavaScript
PDF
Application Architecture Trends
PDF
Circuit 2015 Keynote - Carsten Ziegeler
PDF
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
PPTX
Spring Test Framework
PPTX
unit_1_spring_1.pptxfgfgggjffgggddddgggg
PPTX
Spring
PPT
Spring ppt
PDF
Spring Framework Tutorial | VirtualNuggets
PDF
Java in the age of containers - JUG Frankfurt/M
PPTX
Pragmatic Approach to Microservices and Cell-based Architecture
PDF
Is Enterprise Java Still Relevant (JavaOne 2015 session)
PDF
Java EE, What's Next? by Anil Gaur
PPT
Spring Framework
PPTX
Enterprise Spring Building Scalable Applications
PPTX
Spring framework
Introduction to Spring Framework
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Spring Framework 4.0 to 4.1
Spring - a framework written by developers
JAX 2013: Modern Architectures with Spring and JavaScript
Application Architecture Trends
Circuit 2015 Keynote - Carsten Ziegeler
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Test Framework
unit_1_spring_1.pptxfgfgggjffgggddddgggg
Spring
Spring ppt
Spring Framework Tutorial | VirtualNuggets
Java in the age of containers - JUG Frankfurt/M
Pragmatic Approach to Microservices and Cell-based Architecture
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Java EE, What's Next? by Anil Gaur
Spring Framework
Enterprise Spring Building Scalable Applications
Spring framework

More from Sam Brannen (20)

PPTX
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
PDF
Testing with JUnit 5 and Spring - Spring I/O 2022
PDF
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
PPTX
JUnit 5: What's New and What's Coming - Spring I/O 2019
PDF
JUnit 5 - New Opportunities for Testing on the JVM
PPTX
Get the Most out of Testing with Spring 4.2
PPTX
JUnit 5 - from Lambda to Alpha and beyond
PDF
Testing with Spring: An Introduction
PDF
Testing with Spring 4.x
PDF
Spring Framework 4.1
PDF
Testing Spring MVC and REST Web Applications
PDF
Testing Web Apps with Spring Framework 3.2
PPTX
Spring Framework 3.2 - What's New
PDF
Spring 3.1 and MVC Testing Support - 4Developers
PPTX
Effective out-of-container Integration Testing - 4Developers
PPTX
Spring 3.1 to 3.2 in a Nutshell - SDC2012
PPTX
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
PDF
Spring 3.1 and MVC Testing Support
PDF
Spring 3.1 in a Nutshell - JAX London 2011
PDF
Spring 3.1 in a Nutshell
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with JUnit 5 and Spring - Spring I/O 2022
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5 - New Opportunities for Testing on the JVM
Get the Most out of Testing with Spring 4.2
JUnit 5 - from Lambda to Alpha and beyond
Testing with Spring: An Introduction
Testing with Spring 4.x
Spring Framework 4.1
Testing Spring MVC and REST Web Applications
Testing Web Apps with Spring Framework 3.2
Spring Framework 3.2 - What's New
Spring 3.1 and MVC Testing Support - 4Developers
Effective out-of-container Integration Testing - 4Developers
Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 and MVC Testing Support
Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell

Recently uploaded (20)

PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
ai tools demonstartion for schools and inter college
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
AI in Product Development-omnex systems
PPT
Introduction Database Management System for Course Database
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
How to Migrate SBCGlobal Email to Yahoo Easily
Operating system designcfffgfgggggggvggggggggg
Odoo POS Development Services by CandidRoot Solutions
ai tools demonstartion for schools and inter college
Adobe Illustrator 28.6 Crack My Vision of Vector Design
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
ISO 45001 Occupational Health and Safety Management System
Understanding Forklifts - TECH EHS Solution
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
AI in Product Development-omnex systems
Introduction Database Management System for Course Database
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
How to Choose the Right IT Partner for Your Business in Malaysia
VVF-Customer-Presentation2025-Ver1.9.pptx
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Materi-Enum-and-Record-Data-Type (1).pptx
Which alternative to Crystal Reports is best for small or large businesses.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free

Composable Software Architecture with Spring

  • 1. Composable Software Architecture with Spring Sam Brannen @sam_brannen Java Breeze | Odessa, Ukraine | 18 May 2013
  • 2. 2 Sam Brannen •  Spring and Java Consultant @ Swiftmind (Zurich) •  Developing Java for over 15 years •  Spring Framework Core Committer since 2007 •  Spring Trainer •  Presenter on Spring, Java, OSGi, and testing
  • 3. 3 Swiftmind Your experts for Enterprise Java Areas of expertise •  Spring Framework •  Java EE •  OSGi •  Agile Methodologies •  Software Engineering Best Practices Headquarters •  Zurich, Switzerland •  @swiftmind •  http://www.swiftmind.com
  • 4. 4 Agenda •  Enterprise Applications •  What we’ve learned as a community •  Composable Software Architecture •  Java EE + Open Source •  How Spring fits into the picture •  Spring 4.0 Roadmap
  • 6. 6 What does "enterprise" mean? Enterprise software is software used in organizations, such as in a business or government, as opposed to software used by individuals. Enterprise software is an integral part of a (computer based) Information System. -Wikipedia
  • 7. 7 OK, sure... but what does that mean to developers?
  • 8. 8 Furthermore … Enterprise software typically has interfaces to other enterprise software and is centrally managed. - Wikipedia
  • 9. 9 Ahh, now we’re getting somewhere!
  • 10. 10 Typical Enterprise Application •  Supports enterprise business process •  Is relatively large •  Should be robust, scalable, and offer high performance •  Does not run in isolation •  Interacts with multiple external systems and services …
  • 16. 16 SOAP Web Services, REST Web Services
  • 17. 17 Web and Mobile clients, etc.
  • 18. 18 But each of these has its own APIs and potentially different protocols and exchange formats!
  • 19. 19 So how should we design such enterprise applications?
  • 20. 20 What we’ve learned as a community
  • 21. 21 Things to avoid •  Tight coupling to the container or frameworks •  Tight coupling to protocols and exchange formats in our service layer •  Monolithic deployment units •  Anemic domain models •  Bloated transaction scripts •  Code tangling and scattering
  • 22. 22 What we should aim for •  Modularity •  Layered architecture with –  a canonical domain model –  a dedicated orchestration layer •  Separation of concerns •  Externalized environment-specific configuration •  Design for testability
  • 23. 23 How we achieve it •  OOA / OOD / OOP •  (@)POJO Programming Model •  Marshaling and automatic type conversion •  Dependency Injection (DI) •  Inversion of Control (IoC) •  AOP / Interceptor Model •  Automated out-of-container testing and CI
  • 25. 25 Composability Composability is a system design principle that deals with the inter-relationships of components. A highly composable system provides recombinant components that can be selected and assembled in various combinations to satisfy specific user requirements. (Wikipedia) •  Self-contained (modular) •  Typically stateless
  • 26. 26 But it's not just about modularity and statelessness.
  • 27. 27 It's a different way of thinking,
  • 28. 28 a different way of designing,
  • 29. 29 a different kind of architecture,
  • 32. 32 Think about different ways the same components can be...
  • 36. 36 to meet different business requirements
  • 37. 37 or to interact with different systems.
  • 39. 39 How is this new? •  To be honest, it’s not really new, –  if you just look at the diagram… •  The web tier or presentation layer has always effectively been a type of orchestration layer. •  The difference is that we re-use all of the other layers with multiple types of orchestration simultaneously!
  • 40. 40 Orchestration Layer •  Lies at the heart of a composable architecture •  Orchestrates all interactions with the service layer –  potentially interacting directly with repositories (e.g., in batch processing) •  Handles external protocols •  Converts from external formats into our canonical domain model •  Thereby… allowing application services to be composed in a multitude of different ways!
  • 41. 41 Common Types of Orchestration •  Web controller –  HTTP, HTTPS :: HTTP request and response •  REST or SOAP Web Service endpoint –  HTTP/HTTPS :: XML, JSON, binary, … •  JMS or AMQP listener (or message listener container) –  JMS Message types, domain entities, … •  Messaging endpoint (e.g., gateway + service activator) –  Web service, FTP, file system, email, … •  Batch component (e.g., reader, writer, processor) –  Files, SQL, …
  • 42. 42 Java EE + Open Source
  • 43. 43 What's good about Java EE? •  Set of common enterprise standards for Java •  Consistent across containers and vendors (mostly) •  Great tooling and build support •  Catching up with innovation in open source –  Hibernate à JPA –  Spring DI / Guice / Seam à CDI
  • 44. 44 Java EE is a one stop shop
  • 46. 46 if everything you need is in that shop.
  • 47. 47 But if Java EE doesn’t offer what you need…
  • 48. 48 use open source frameworks
  • 49. 49 either in a Java EE container
  • 50. 50 or in an alternative light-weight container.
  • 51. 51 Open Source Frameworks fill the Gaps •  Web frameworks and UI components •  NoSQL •  Big Data •  AMQP •  Mobile •  Social Media •  Batch •  Enterprise Integration (EAI) •  …
  • 52. 52 How Spring fits into the picture
  • 53. 53 Core Spring (Framework) •  DI + IoC + AOP •  Declarative –  transactions, caching, validation, formatting •  Spring MVC and REST •  JMS Message Listener Container –  Message-driven POJOs •  Testing framework
  • 54. 54 Dependency Injection and Inversion of Control collectively decouple application code from the deployment environment
  • 55. 55 DI + IoC à POJO Programming Model
  • 56. 56 POJO Programming Model + AOP à Composability
  • 57. 57 Spring is an Ecosystem •  Spring MVC •  Spring REST •  Spring Web Flow •  Spring Security •  Spring Web Services •  Spring Batch •  Spring Integration •  Spring Data •  Spring Mobile •  Spring Social •  Spring AMQP •  …
  • 58. 58 Spring MVC and REST •  @Controller annotated components serve as MVC handler methods and REST endpoints •  Automatic type conversion •  Data binding to domain entities •  Marshaling –  JSON, JAXB, Castor, XMLBeans, JiBX, XStream, … •  Handler methods and endpoints orchestrate the service layer
  • 59. 59 Spring Web Services •  @Endpoint annotated components serve as SOAP Web Service endpoints •  Marshaling (OXM) –  JAXB, Castor, XMLBeans, JiBX, XStream •  Endpoint methods orchestrate the service layer
  • 60. 60 Spring JMS •  Message listener containers (MLC) support –  JMS MessageListener API –  Message-driven POJOs •  Automatic type conversion from JMS Message types into –  String, Map, Object, byte[] –  Customer converters also supported •  Marshaling –  Spring OXM, customer solutions, etc. •  MLC orchestrates the service layer
  • 61. 61 Spring Integration •  Inbound and outbound messaging gateways –  Handle external protocols and APIs –  Too many to mention here! •  Automatic type conversion for method arguments and return types in Service Activators •  Marshaling and custom type conversion also supported •  The service layer can be orchestrated via declarative configuration (e.g., service activators in XML)
  • 62. 62 And the list goes on …
  • 63. 63 Composable Architecture – with Spring Infrastructure Repository Service DomainModel Spring REST Spring MVC Spring JMS Spring Integration Spring Batch Spring WS
  • 64. 64 Composable Architecture Checklist þ  Modularity þ  Layered architecture þ Canonical Domain Model þ Orchestration: web, batch, integration, web services þ Service þ Repository þ Infrastructure þ  POJO programming model þ  Separation of concerns þ  Externalized environment-specific configuration þ  Testability, automated testing, and CI
  • 66. 66 1st Class Support for Java 8 based apps •  Language features such as lambda expressions –  for callbacks with templates –  for concurrent execution •  think fork/join, map/reduce, etc. •  APIs such as JSR-310 Date and Time –  Alongside Spring’s existing support for JodaTime
  • 67. 67 Configuring Spring with Groovy 2 •  Configuring and implementing Spring-style applications using Groovy 2.x •  Groovy-based bean definitions •  Groovy as the language of choice for an entire application, as a direct and straightforward alternative to Java source files •  Groovy 2.0's static compilation support completes the picture here
  • 68. 68 Support for Key Java EE 7 Technologies •  JMS 2.0 •  JPA 2.1 •  Bean Validation 1.1 •  Servlet 3.1 •  And fully covering JCache 1.0
  • 69. 69 Enabling WebSocket-style Architectures •  Support for JSR-356 compliant runtimes •  Also supporting related technologies
  • 70. 70 Fine-grained Eventing and Messaging •  Introducing fine-grained eventing and messaging within the application •  Building on our existing application event mechanism •  Aligned with our JMS message listener mechanism
  • 71. 71 Pruning and Dependency Upgrades •  Removing a variety of deprecated packages across the framework –  See Spring Framework 3.2's deprecations! •  Raising minimum dependencies to Java 6+ –  Java SE 6+ and Java EE 6+ –  with some compromises for EE 5++ servers
  • 73. 73 Further Resources •  Spring Projects –  http://www.springsource.org/projects –  Reference Manuals –  Javadoc •  Spring Forums –  http://forum.springframework.org •  Spring JIRA –  http://jira.springframework.org •  GitHub Repositories –  https://github.com/SpringSource
  • 74. 74 Blogs •  Swiftmind Team Blog –  http://www.swiftmind.com/blog/ •  SpringSource Team Blog –  http://blog.springsource.com/
  • 75. 75 Q & A Sam Brannen twitter: @sam_brannen www.slideshare.net/sbrannen www.swiftmind.com