We will create a new project in this course.
And we will implement this project with using Spring Boot, Angular, MYSQL, Liquibase and Docker.
In our project, we will implement CRUD operations. And these CRUD operations will be requested from Angular.
Then This requests will be handled from Spring Boot.
Our project goes on User operations.
Our main operations will be user login, register, profile and user list.
And this all things will be provided with secure way in both Angular and Spring Boot side.
We will have three main components to implement our project.
These are server side, client side and infrastrure side.
In Server Side:
Spring Boot will be main thing.
Model View Controller structure will be implemented with using Spring Boot.
Our MVC structure will work like that:
First of all, the entity classes will be created under model package.
Later, if model class is permanent, we will create a repository for it.
Then we will call repository from services.
Finally, we will call services from from controllers.
In Spring Boot, Data will be presented to client as API call so Spring Rest Controller will be used to handle it.
We will use MySQL as Database.
We will also use Object Relational Mapping with Java Persistence API and Hibernate.
You know, We can map our database tables to objects with hibernate.
We will use JPA Repository and Crud Repository in Spring Boot.
So these repository templates will handle common database operations like save, update, find, delete.
With Spring Boot, we will also use Lombok library to clear code.
You know that we don't want to implement getter, setter, equals and hash code. So we can escape it using Lombok @Data or @Value annotation.
We will use Gradle To handle all dependencies on server side.
That's all about Server side.
Let's talk about Client Side.
Angular will be the main client controller.
Angular works on nodeJS.
In angular, we have also MVC structure.
In service: We can connect to server side and we can send requests or we can get responses from server side with http.
In controller:We can call service methods and get responses.
In View: we can implement UI interface.
On Client side, we will also use NGINX To use some benefits of it like caching and security, we will use it as angular presenter.
The last main component of our project will be Docker.
We will use Docker for Infrastructure:
All infrastrure will be handled with docker composer.
We will create Dockerfile for each Client And Server side. Then we will call them with docker composer.
Ok. That's all about our project architecture.