Session: Introduction to Spring
Lesson: The Spring Framework
- Understand the value of Spring
- Explore Dependency Injection (DI) and Inversion of Control (IoC)
- Introduce different ways of configuring collaborators
- Spring as an Object Factory
- Initializing the Spring IoC Container
Lesson: Configuring Spring Managed Beans
- Introduce Java-based configuration
- The @Configuration and @Bean annotations
- Define bean dependencies
- Bootstrapping Java Config
- Context Injection in Configuration classes
- Using context Profiles
- Conditionally loading beans and configurations
- Bean Life-Cycle Methods
Lesson: Defining Bean dependencies
- Introduce Spring annotations for defining dependencies
- Explore the @Autowired annotation
- Stereotype Annotations
- Qualifying injection points
- Lifecycle annotations
- Using properties in Java based configuration
- The @Value annotation
- Using the Candidate Components Index
Lesson: Introduction to Spring Boot
- Introduce the basics of Spring Boot
- Explain auto-configuration
- Introduce the Spring Initializr application
- Bootstrapping a Spring Boot application
Lesson: Working with Spring Boot
- Provide an overview of Spring Boot
- Introduce starter dependencies
- Introduce auto-configuration
- @Enable... annotations
- Conditional configuration
- Spring Boot Externalized Configuration
- Bootstrapping Spring Boot
Session: Spring AOP
Lesson: Introduction to Aspect Oriented Programming
- Aspect Oriented Programming
- Cross Cutting Concerns
Lesson: Spring AOP
- Spring AOP in a Nutshell
- @AspectJ support
- Spring AOP advice types
- AspectJ pointcut designators
Session: Spring Data (Introduction)
Lesson: Spring Data Overview
- Spring Data Capabilities and Features
- Spring Data repositories
- The Repository interfaces
- Defining the JPA entity
- Persisting entities using Spring Data JPA
- Bootstrapping the Spring Data application
Lesson: Spring Data Query Methods
- Querying data using Query methods
- Query builder mechanism
- Handling an Absence of Value
- Pagination and Ordering
- Asynchronous query methods
- Count and Delete Derived Query methods
Lesson: Spring Data JPA Queries
- JPA named queries
- @Query and @NamedQuery annotations
- Defining Query parameters
- Executing native queries
- SpEL expressions in queries
- Managing the Persistence Context after updates
Session: Implementing REST with Spring
Lesson: REST principles
- Introduce the six architectural constraints of REST
- Introduce Resources and Resource representations
- Best practices for defining Resource URIs
Lesson: Introduction to RESTful Services in Spring
- Discuss the request-response cycle of REST requests
- Defining a REST Controller in Spring
- Explain the @ResponseBody annotation
- Define request mappings
- Use path variables
Lesson: Introduction to REST Clients in Spring
- Introduce RestTemplate class
- Making GET, POST, PUT, HEAD, OPTIONS and DELETE requests
- Introduce the UriTemplate class
- Using HttpEntity and RequestEntity
- Use the exchange method to define ‘complex’ requests
- Process requests and responses using callback
- Configure the RestTemplate
Lesson: Bootstrapping the REST application
- Describe steps needed to bootstrap Spring REST application
- Configure Content Representation libraries
- Configure Spring MVC and map the Dispatcher Servlet
- Explain the advantages of using Spring Boot to setup the REST project
- Setup a Spring REST application using Spring Boot
Lesson: Content Representation
- Returning different media types from service
- Introduce negotiated resource representation
- Configure Message Converters
Lesson: Implementing the REST Service
- Process for Spring REST Implementation
- The Domain object
- Using Project Lombok to define the domain object
- (Not) Using Data Transfer Objects
- ResponseEntity builder interfaces
- Setting Location header using UriComponentsBuilder
Session: Spring Boot 2
Lesson: Spring Boot Actuator
- Understand Spring Boot Actuators
- Work with predefined Actuator endpoints
- Enabling Actuator endpoints
- Securing the Actuator
Lesson: Developing in Spring Boot
- Introduce Spring Boot Devtools
- Enable the ConditionEvaluationReport
- Debugging Spring Boot applications
Additional Topics: Time Permitting
Lesson: Thymeleaf
- Provide a quick overview of Thymeleaf
- Introduce Thymeleaf templates
- Create and run a Spring Thymeleaf MVC application
- Lab: Add front-end to REST Repository