Welcome to the Advanced API Development (AAD) Code Space! Explore comprehensive lessons covering Jakarta EE, JSON, AJAX, Spring, and security topics, with code examples organized across distinct branches. Embark on a journey through API development concepts using practical, real-world scenarios.
Table of Contents
- AAD Lesson Code Space
-
Lessons
- Lesson-01 - Jakarta EE & Servlet Specification
- Lesson-02 - JSON & JavaEE Mapping Types
- Lesson-03 - CRUD & AJAX Basics
- Lesson-04 - Advanced AJAX & CORS Policy
- Lesson-05 - Student Management System & Logging
- Lesson-06 - Bean Life Cycle & Dependency Injection
- Lesson-07 - Bean Scope & Spring AOP
- Lesson-08 - Spring MVC & JSON Binding
- Lesson-09 - Hibernate & JPA Implementation
- Lesson-10 - User Layer & File Uploading
- Lesson-11 - User Layer & RESTful Enhancements
- Lesson-12 - Project Finalization & Java Project Tools
- Lesson-13 - Spring Boot Integration & JWT Security
- Lesson-14 - Basic Authentication & OAuth2.0
- Usage
- License
- Introduction to Jakarta EE, Servlet Specification, and Tomcat setup.
- Access the content on the lesson/Day_01 branch:
git clone -b lesson/Day_01 --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Covers MIME Types, JSON introduction, handling and binding, and JavaEE mapping types.
- Access JSON topics on the lesson/Day_02/JSON_Intro branch:
- Access mapping types on the lesson/Day_02/Mapping_Types branch:
git clone -b lesson/Day_02/JSON_Intro --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_02/Mapping_Types --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- CRUD implementation using JakartaEE and MySQL, AJAX introduction and `onreadystatechange` handling.
- Access the content on the lesson/Day_03 branch:
git clone -b lesson/Day_03 --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Advanced AJAX techniques, CORS policy handling, HTTP methods, and JNDI introduction.
- Access the content on the lesson/Day_04 branch:
git clone -b lesson/Day_04 --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Introduction to Java logging frameworks, including Log4J, SLF4J, and logging levels with the Student Management System project.
- Access the logging system on the lesson/Day_05/StudentManagementSystem branch:
- Access layered architecture on the lesson/Day_05/StudentManagementSystemLayered branch:
git clone -b lesson/Day_05/StudentManagementSystem --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_05/StudentManagementSystemLayered --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Exploring Spring's Inversion of Control, Bean Life Cycle, Dependency Injection types, and annotations.
- Access Bean Life Cycle on the lesson/Day_06/BeanLifeCycle branch:
- Access DI and Bean Priority on the lesson/Day_06/DIAndBeanPriority branch:
- Access DI types on the lesson/Day_06/DI_Types branch:
git clone -b lesson/Day_06/BeanLifeCycle --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_06/DIAndBeanPriority --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_06/DI_Types --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Covers Spring Bean Scopes and Aspect-Oriented Programming (AOP).
- Access Bean Scope on the lesson/Day_07/BeanScope branch:
- Access AOP on the lesson/Day_07/Spring_AOP branch:
git clone -b lesson/Day_07/BeanScope --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_07/Spring_AOP --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Spring MVC, JSON binding with Jackson, and ResponseEntity configurations.
- Access Spring MVC on the lesson/Day_08/Spring_MVC branch:
- Access NoteTaker on the lesson/Day_08/NoteTaker branch:
git clone -b lesson/Day_08/Spring_MVC --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_08/NoteTaker --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Hibernate and JPA setup with Spring, including the service and repository layers for the NoteTaker project.
- Access NoteTaker Service layer on the lesson/Day_09/NoteTaker-Service branch:
- Access NoteTaker Repository on the lesson/Day_09/NoteTaker-Repository branch:
git clone -b lesson/Day_09/NoteTaker-Service --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_09/NoteTaker-Repository --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Introduction to JPA and CRUD Repositories, along with user layer implementation and health check setup.
- File uploading using Multipart Form Data, including @MultipartConfig and Base64 encoding for file handling.
- Access the User Layer and File Uploading features on the following branches:
- User Layer: lesson/Day_10/NoteTaker-UserLayer
- File Uploading: lesson/Day_10/NoteTaker-FileUploading
git clone -b lesson/Day_10/NoteTaker-UserLayer --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_10/NoteTaker-FileUploading --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Development of the User layer, including CRUD operations within the service layer and TypeToken utility for generic type handling.
- Implementation of custom exceptions, creation of custom objects with error codes and messages, and RESTful code structuring.
- Access the User Layer and RESTful features on the following branches:
- User Layer: lesson/Day_11/UserLayer
- RESTful Enhancements: lesson/Day_11/Restfull
git clone -b lesson/Day_11/UserLayer --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_11/Restfull --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Final code validation and completion of the Note-Taker practice project.
- Java project tools and best practices discussed to ensure optimal setup and performance.
- Access the finalized Note-Taker project on the lesson/Day_12 branch:
git clone -b lesson/Day_12 --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Spring Boot Integration to enhance project structure and functionality:
- Refactored the NoteTaker project to utilize Spring Boot, streamlining project setup and configuration.
- Access Spring Boot Integration on the lesson/Day_13/SpringBoot branch:
- Spring Security & JWT Security for secure API development:
- Introduced Spring Security by adding dependencies to the build.gradle file, enabling secure authentication and authorization, role-based access control, and safeguarding against common vulnerabilities.
- JWT integration provides token-based authentication, ensuring secure API access with token generation and validation mechanisms.
- Access Spring Security and JWT integration on the lesson/Day_13/SpringSecurity branch:
git clone -b lesson/Day_13/SpringBoot --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_13/SpringSecurity --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
- Basic Authentication with JWT token management:
- Includes a new JWT key configuration in the YAML file for secure token management.
- The
UserEntity
class has been updated with essential fields and relationships for user management, including user ID, first name, last name, email, password, profile picture, and associated notes. - These updates ensure secure handling of user data, providing a foundation for more advanced security features.
- Access Basic Authentication on the lesson/Day_14/BasicAuth branch:
- OAuth2.0 Authentication with JWT token-based security:
- OAuth2.0 configuration for secure user authentication and authorization, integrating JWT for token generation and validation.
- The
application-dev.yml
file includes updates for database settings, server port, and security credentials, aligning with modern security standards. - These configurations ensure robust security for API endpoints, following best practices for secure web applications.
- Access OAuth2.0 on the lesson/Day_14/OAuth2.0 branch:
git clone -b lesson/Day_14/BasicAuth --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
git clone -b lesson/Day_14/OAuth2.0 --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
To run the project, follow these steps:
- Clone the repository and navigate to the required branch.
- Open the project in your IDE.
- Build and run the application.
- Ensure Java versions 8, 11, 17, or 21 are installed.
This project is licensed under MIT License.
© 2024 Gayanuka Bulegoda