You will be introduced to Spring Core and the Java Persistence API (JPA) specification. Explore the Servlet container and the underlying technology for generating Java Server Pages (JSP) mappings.

During the course, you will develop a tutorial web application following the MVC template that interacts with a DBMS using JPA. Then you will rewrite it based on Spring MVC and add support for RESTful web services.

Course syllabus:

  1. Introduction

What is a Web service
What is a Web container
Typical Web service architecture (repository, service, controller)
Build systems maven, gradle
Introduction to Spring Boot
Practice Hello world!

  1. Communication between web services

Introduction to REST concept
Introduction to JSON
Types of web requests: GET, POST, PUT, DELETE, etc.
Error codes
Practice

  1. basic concepts of Spring Boot

Dependency Injection, Inversion of Control
What are annotations
Bean, Repository, Component, Controller and others
101 ways to declare a Bean
Practice

  1. Getting to know the UI

Twitter Bootstrap
JSP, FreeMarker
Practice

  1. Databases

Relational and non-relational databases
Introduction to SQL
Data modeling
JOIN operator
Practice

  1. ORM: Connection between Java and databases

Connection pool
JDBC Rowset
Introduction to JPA/Hibernate
Practice

  1. Practice using Hibernate

OneToMany, ManyToOne, ManyToMany links
Working with ENUM
Serialization/deserialization configuration
Lazy/Eager data loading
Transactions

  1. Working with Spring Data

Different types of repositories
Built-in methods
Pagination

  1. Getting data from other web services

RestTemplate
Spring Declarative HTTP Client
Other clients
Practice

  1. Advanced Spring Boot tools

Handling errors at Controller Advice level
Configuration files
Profiles
Actuator
Input validation
Practice

  1. Spring Boot Bad Practices

This is not the way to do it
Component Isolation
DTO/POJO and other beasts
Beware of Hibernate

  1. Advanced JSON techniques

Jackson – built-in library
Serialization/deserialization setup
Jackson polymorphism
Practice

  1. Testing in Spring Boot

Testing individual components
Testing web components
Testing work with external services using WireMock
Practice

  1. Testing Spring Boot with databases