Duration
5 days
Day 1
9:00am-10:30am
- Introduction to Spring
- Overview of Spring Technology
- The Motivation for Spring, Spring Architecture
- The Spring Framework
- Spring Introduction
- Declaring and Managing Beans
- ApplicationContexts
- Using @Component/@Named
10:30am-10:45pm Morning Break
10:45pm-12:30pm
- Dependencies and Dependency Injection (DI)
- Examining Dependencies
- Dependency Inversion / Dependency Injection (DI)
- XML Configuration of DI
- Injection with @Autowire
- Configuration in Depth
- Java Based Configuration (@Configuration)
- Overview, @Configuration, @Bean
- Dependency Injection
- Resolving Dependencies
12:30pm-1:30pm Lunch
1:30pm-3:30pm
- Integrating Configuration Types
- XML vs. @Component
- @Configuration Pros and Cons
- Choosing a Configuration Style
- Integrating Configuration Styles
- Bean Scope and Lifecycle
- Singleton, Prototype, and Other Scopes
- Configuring Scope
- Bean Lifecycle / Callbacks
3:30pm-3:45pm Afternoon Break
3:45pm-5:00pm
- Externalizing Properties
- Properties Files
- @PropertySource, property-placeholder
- Using @Value
- SpEL
- Profiles
- Overview and Configuration
- Activating Profiles
Day 2
9:00am-10:30am
- Spring Boot Overview
- maven and Spring
- Spring Boot Structure
- Spring POMs with Boot Parents
- Spring Boot Starters
- Other Capabilities
10:30am-10:45pm Morning Break
10:45pm-12:30pm
- Spring Testing
- Testing and JUnit Overview
- Writing Tests - Test Classes, asserts, Naming Conventions
- Running Tests - IDE, maven, ...
- Test Fixtures - setup and teardown
- Spring TestContext Framework
Overview
- Configuration
- Running Tests
12:30pm-1:30pm Lunch
1:30pm-3:30pm
- Spring and Spring Data with Hibernate/JPA
- Overview of Spring database support
- Configuring a DataSource
- Using Spring with Hibernate
- High-Level Hibernate Overview
- SessionFactory configuration, LocalSessionFactoryBean
- Contextual Sessions and Spring Integration
3:30pm-3:45pm Afternoon Break
3:45pm-5:00pm
- Using Spring with JPA
- Managing the EntityManager (EM)
- LocalContainerEntityManagerFactoryBean and Container-managed EMs
- JEE and JNDI Lookup of the EM
- Configuration and Vendor Adaptors
- Creating a JPA Repository/DAO Bean - @PersistenceUnit, @PersistenceContext
Day 3
9:00am-10:30am
- Spring Data Introduction
- Overview and Architecture
- Configuring Spring Data
- Repositories and JPA Repositories
- Using CrudRepository
- Spring Data Querying
- Naming Conventions for Querying
- Creating more Complex Queries
- Query Configuration
10:30am-10:45pm Morning Break
10:45pm-12:30pm
- Spring Transaction (TX) Management
Overview
- Declarative TX Management (REQUIRED, etc.)
- TX Scope and Propagation
- XML Configuration of Transactions
- Specifying Advice, TX Attributes, and Methods
- Linking Advice with Pointcuts
- Benefits of XML Configuration of TX Behavior
12:30pm-1:30pm Lunch
1:30pm-3:30pm
- Spring Web Integration and Intro to Spring MVC
- Java EE Web App Integration
- ContextLoaderListener and WebApplicationContext
- Web MVC Overview
- Spring MVC Basics
- Configuration and the DispatcherServlet
- @Controller, @RequestMapping (Handlers)
- @RequestParam and Parameter Binding
- View Resolvers
- Controller Details - @RequestParam, @PathVariable
- Model Data and @ModelAttribute
3:30pm-3:45pm Afternoon Break
3:45pm-5:00pm
- Additional Spring MVC Capabilities
- @ModelAttribute and Reference Data
- Forms and Binding, Spring Form Tags
- Sessions and @SessionAttributes
- Validation / JSR-303
Day 4
9:00am-10:30am
- RESTful Services with Spring
- REST Overview, URI Templates
- REST and Spring MVC
- Spring support for REST
- @RequestMapping/@PathVariable, @RequestBody, @ResponseBody
- URI Templates and @PathVariable
- Controllers with @RestController
- Generating JSON
- JSON Overview
- JSON Representations for Resources
- Message Converters
- Generating XML
- JAXB and Jackson Message Converters for XML
- JAXB / @XmlRootElement
- Content Negotiation
10:30am-10:45pm Morning Break
10:45pm-12:30pm
- Working with JSON and XML
- Generating JSON
- JSON Overview
- JSON Representations for Resources
- Message Converters
- Generating XML
- JAXB and Jackson Message Converters for XML
- JAXB / @XmlRootElement
- Content Negotiation
12:30pm-1:30pm Lunch
1:30pm-3:30pm
- Java Clients for RESTful Services
- Client Requirements and Spring's RestTemplate
- getForObject() / getForEntity()
- Other RestTemplate Methods
- Accessing Headers / exchange()
3:30pm-3:45pm Afternoon Break
3:45pm-5:00pm
- Common REST Patterns
- GET: Read
- POST: Create
- PUT: Update
- DELETE: Delete
- Programming on server side, and client side (with RestTemplate)
Day 5
9:00am-10:30am
- Additional New Features in Spring 5
- Updates to Spring Core
- WebFlux / Reactive Web Framework
- XML-Specific Configuration (Optional)
- Collections - lists, sets, etc.
- Additional Capabilities
- Factory Classes and Factory Methods
- Definition Inheritance (Parent Beans)
- AutoWiring with XML
- Inner Beans, Compound Names
- Introduction to Microservices
10:30am-10:45pm Morning Break
10:45pm-12:30pm
- What are Microservices?
- Decentralized Governance, Scalability, Fault Tolerance
- Cloud Computing
- Spring Cloud
- Service and Client Discovery
- Netflix OSS
- Core Microservice Patterns using Spring Cloud and Netflix OSS
- Where are my Services?
- Using Service Discovery
- Eureka Servers and Clients
12:30pm-1:30pm Lunch
1:30pm-3:30pm
- Scale Services
- Load Balancing with Ribbon using Service Discovery
- A LoadBalanced RestTemplate
- Load Balancing with Ribbon without Service Discovery
- Circuit Breaker, when services fail
- Hystrix
- Callbacks
3:30pm-3:45pm Afternoon Break
3:45pm-5:00pm
- Gateway/Edge Services – Providing an API
- Zuul services
- Filtering the Request and Response
- Create Feign Clients to your Services
- Event Driven Services or Sagas
- Keeping Services synchronized with each other
- Creating Message Queues
Programme scope, delivery arrangements and suitability are confirmed during enquiry.