EIEIOTECHNOVATION
← Training programmes

EIEIO / PROGRAMMING & DEVELOPMENT

Basic Spring MVC Web Applications

Course outline

5 days

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.