Skip to content

Latest commit

 

History

History
237 lines (198 loc) · 15.6 KB

README.md

File metadata and controls

237 lines (198 loc) · 15.6 KB

AAD Lesson Code Space

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
  1. AAD Lesson Code Space
  2. Lessons
  3. Usage
  4. License

Lessons

Lesson-01 - Jakarta EE & Servlet Specification

  • 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

Lesson-02 - JSON & JavaEE Mapping Types

  • Covers MIME Types, JSON introduction, handling and binding, and JavaEE mapping types.
  • Access JSON topics on the lesson/Day_02/JSON_Intro branch:
  • git clone -b lesson/Day_02/JSON_Intro --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access mapping types on the lesson/Day_02/Mapping_Types branch:
  • git clone -b lesson/Day_02/Mapping_Types --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-03 - CRUD & AJAX Basics

  • 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

Lesson-04 - Advanced AJAX & CORS Policy

  • 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

Lesson-05 - Student Management System & Logging

  • 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:
  • git clone -b lesson/Day_05/StudentManagementSystem --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access layered architecture on the lesson/Day_05/StudentManagementSystemLayered branch:
  • git clone -b lesson/Day_05/StudentManagementSystemLayered --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-06 - Bean Life Cycle & Dependency Injection

  • 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:
  • git clone -b lesson/Day_06/BeanLifeCycle --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access DI and Bean Priority on the lesson/Day_06/DIAndBeanPriority branch:
  • git clone -b lesson/Day_06/DIAndBeanPriority --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access DI types on the lesson/Day_06/DI_Types branch:
  • git clone -b lesson/Day_06/DI_Types --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-07 - Bean Scope & Spring AOP

  • Covers Spring Bean Scopes and Aspect-Oriented Programming (AOP).
  • Access Bean Scope on the lesson/Day_07/BeanScope branch:
  • git clone -b lesson/Day_07/BeanScope --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access AOP on the lesson/Day_07/Spring_AOP branch:
  • git clone -b lesson/Day_07/Spring_AOP --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-08 - Spring MVC & JSON Binding

  • Spring MVC, JSON binding with Jackson, and ResponseEntity configurations.
  • Access Spring MVC on the lesson/Day_08/Spring_MVC branch:
  • git clone -b lesson/Day_08/Spring_MVC --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access NoteTaker on the lesson/Day_08/NoteTaker branch:
  • git clone -b lesson/Day_08/NoteTaker --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-09 - Hibernate & JPA Implementation

  • 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:
  • git clone -b lesson/Day_09/NoteTaker-Service --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • Access NoteTaker Repository on the lesson/Day_09/NoteTaker-Repository branch:
  • git clone -b lesson/Day_09/NoteTaker-Repository --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-10 - User Layer & File Uploading

  • 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
    • git clone -b lesson/Day_10/NoteTaker-UserLayer --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
    • File Uploading: lesson/Day_10/NoteTaker-FileUploading
    • git clone -b lesson/Day_10/NoteTaker-FileUploading --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-11 - User Layer & RESTful Enhancements

  • 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
    • git clone -b lesson/Day_11/UserLayer --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
    • RESTful Enhancements: lesson/Day_11/Restfull
    • git clone -b lesson/Day_11/Restfull --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-12 - Project Finalization & Java Project Tools

  • 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

Lesson-13 - Spring Boot Integration & JWT Security

  • 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:
    • git clone -b lesson/Day_13/SpringBoot --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • 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/SpringSecurity --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Lesson-14 - Basic Authentication & OAuth2.0

  • 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:
    • git clone -b lesson/Day_14/BasicAuth --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git
  • 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/OAuth2.0 --single-branch https://github.com/gayanukabulegoda/AAD-Lesson-Code-Space.git

Usage

To run the project, follow these steps:

  1. Clone the repository and navigate to the required branch.
  2. Open the project in your IDE.
  3. Build and run the application.
    • Ensure Java versions 8, 11, 17, or 21 are installed.

License

This project is licensed under MIT License.


© 2024 Gayanuka Bulegoda