Spring 5 Framework Development

Course Description

"The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments." This course is for Java Programmers who want to understand the Spring Framework and the use of the Java Persistence API (JPA) in an enterprise software development environment. It is suitable for people who have no experience with Spring or programmers who have been working with Spring but might have joined a project that is already configured and not had to create one from scratch. At the end of the course the participants will have a good understanding of Enterprise Software Development, Design Patterns and the core philosophies of the Spring Framework and will have practical experience in creating Spring based web applications for the Enterprise environment.
5 Days
€1850.00
 

Pre-requisites

The course assumes a prior knowledge of OOP with Java. Some knowledge of JDBC and JSP is useful but not essential. It assumes NO prior knowledge of dependency injection and inversion of control.

Course Objectives

Understand the core principles of Spring, and of Dependency Injection (DI) / Inversion of Control
Use the Spring Core module and DI to configure and wire application objects (beans) together
Know the different types of metadata (XML, annotations/@Component, and Java Configuration/@Configuration), and how and when to use them
Use Spring Boot and Spring Initializr to simplify project specification, dependency management and configuration
Work with the ORM (Object-Relational Mapping) module to integrate Spring with JPA and Hibernate
Use Spring Data to automatically generate JPA-based repository classes
Integrate Spring with Java EE Web applications
Build Web applications with Spring MVC, including configuration using Java config and Servlet 3 capabilities
Understand REST, and use Spring MVC to build RESTful services
Use AJAX-based front ends with Spring MVC / Spring REST
Use Spring Security to implement authentication and authorization for your web application
Understand and use the core capabilities of Spring’s Reactive programming support
Create a RESTful web service based on the reactive Spring WebFlux model
Apply CI/CD techniques for automated Spring Boot application testing and deployment
Configure a Virtual Private Server (VPS) to host your web application with own domain and SSL certificate

What is the Spring Framework?

The Inversion of Control Design Pattern
Core Design Considerations of the Spring Framework
Small and lightweight
Inversion of Control
Coding to Interfaces not implementations
Use of annotated POJOs rather than inheritance
Convention over configuration
Sensible defaults to minimise configuration
Aspect Oriented Programming

Working with POJOs

Annotations
Introducing Lombok
@GETTER, @SETTER
@AllArgsConstruction @NoArgsConstructor
@ToString

Spring managed beans

Defining beans in an xml file
Defining beans in a config file
Defining beans using stereotypes
@Component
@Service
@Repository
Loose coupling - Inversion of Control
@Autowired

Spring JdbcTemplate

The Spring JdbcTemplate is a good example of the elegance and simplicity of the Spring Framework. It takes the repetitive boilerplate code out of database access and simplifies database access.
The DAO Pattern
Implementing an DAO using the Spring JdbcTemplate

Jpa - Java Persistence API

What is an ORM?
What is Hibernate?
How does Hibernate relate to JPA
@Entity
@Id
@Column
Extending JPA Repository

Spring Web MVC

The Model View Controller design pattern
Creating a @Controller
Creating a ViewResolver
Creating a View
Adding data to the model

Spring Boot

Spring Boot allows us to create a Spring project quickly and easily. It simplifies the creation of the project and the management of dependencies. It has sensible defaults to minimise or sometimes eliminate configuration. It generates a single jar file to simplify deployment even for complex web applications by including an embedded web server
Spring Initializr
Creating a Spring Boot application
Making Spring Boot run from the command line
Using logging

Externalising Application Metadata

Application.properties
@Value annotation
Use of profiles
Other configuration file formats, yml, xml
Overriding application properties
Using a separate application.properties outside the jar
Specifying profile from command line

Spring Boot Web Application

Creating a Web Application using Spring Initializr
Adding an @Entity to model your data
Adding a @Repository
Creating a @Controller
Adding Thymeleaf views
Understanding the Thymeleaf templating language

Spring Boot RESTful API

Create a @RestController
Defining @RequestMapping
@PathParam
@RequestBody
Integrating with JPA
@GET, @PUT, @POST, @DELETE

Spring Security Deep Dive

Filtering requests
Session based authentication vs token based authentication
Introduction to JWT
Creating a login endpoint that returns a JWT
Using JWT to authorize requests

The Streams API

Streaming
Lambda functions
Programming Java using a functional style
List operations
Map & Reduce example

Spring WebFlux

The problems with Tomcat - thread pool, single thread per request, blocking calls
Understanding asynchronous programming
Flux and Mono classes
Netty webserver
Non blocking database access
Creating a RESTful WebFlux api
Creating a non-blocking client

Deploying Your Spring Application

Get a VPS
Installing the JDK
Installing MySQL
Getting public ip address
Opening Firewall ports
Running your application
Overriding configuration settings
Registering a domain
Pointing domain at your server
Generating an SSL certificate for you application
Configuring your application to use SSL

DevOps

Storing your project in GitHub
Adding continuous integration
Adding automated testing

Spring 5Spring FrameworkJavaSpring BootReactive Web FrameworkAJAXRESTMVCDevOpsSpringSpring5OOPObject Oriented Programming