Skip to content

eugenp/tutorials

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2e31f06 · Apr 4, 2025
Sep 27, 2023
Feb 28, 2025
Feb 28, 2025
Feb 28, 2025
Mar 14, 2025
Mar 20, 2025
Mar 20, 2025
Mar 14, 2025
Feb 21, 2025
Jan 16, 2025
Mar 14, 2025
Mar 1, 2025
Jan 28, 2025
Aug 25, 2022
Sep 20, 2024
Nov 2, 2024
Oct 22, 2024
Sep 20, 2024
Mar 19, 2024
May 20, 2024
Mar 19, 2024
Oct 19, 2024
Jan 9, 2024
Apr 2, 2025
Dec 16, 2024
Nov 9, 2024
May 6, 2021
Sep 27, 2024
Jan 14, 2025
Apr 15, 2023
Jan 13, 2025
Apr 2, 2025
Feb 21, 2025
Jan 15, 2025
Mar 16, 2024
Mar 3, 2025
Mar 16, 2024
Apr 2, 2025
May 20, 2024
May 8, 2021
Feb 26, 2024
Jun 28, 2024
Oct 8, 2024
Mar 16, 2024
Mar 16, 2024
Mar 5, 2025
Mar 16, 2025
Dec 7, 2024
Aug 3, 2024
Jul 11, 2024
Jan 21, 2025
Apr 7, 2023
Sep 21, 2024
Oct 2, 2024
Aug 17, 2024
Jan 3, 2024
Feb 26, 2024
Sep 26, 2024
Nov 15, 2023
Mar 11, 2025
Mar 20, 2025
Jul 20, 2024
Jun 5, 2024
Mar 17, 2024
Jun 21, 2023
May 20, 2024
Oct 29, 2024
Mar 17, 2024
Dec 5, 2024
Dec 5, 2024
Jul 1, 2023
Jan 5, 2022
Sep 15, 2024
Apr 1, 2024
Jun 28, 2024
Mar 17, 2024
Mar 17, 2024
Aug 8, 2024
Jul 11, 2024
Jul 16, 2024
Sep 27, 2024
Feb 22, 2025
Feb 28, 2025
Nov 9, 2024
Mar 17, 2024
May 21, 2024
Aug 17, 2024
Jul 12, 2024
Nov 9, 2024
Aug 29, 2024
Mar 23, 2025
Mar 28, 2025
Dec 26, 2024
Nov 9, 2024
Jan 21, 2025
Apr 10, 2023
May 15, 2024
Jan 26, 2025
Sep 27, 2024
Sep 13, 2024
Dec 21, 2023
Feb 17, 2025
Sep 13, 2024
Nov 12, 2024
Aug 29, 2024
Dec 12, 2024
Nov 19, 2024
Feb 17, 2025
Oct 29, 2024
Sep 16, 2024
Aug 14, 2024
Sep 16, 2024
Sep 2, 2024
Apr 9, 2023
Mar 12, 2025
Nov 5, 2023
Dec 26, 2024
Apr 15, 2023
Aug 16, 2024
Mar 17, 2024
Nov 3, 2024
Feb 2, 2025
Oct 28, 2024
Sep 14, 2024
Apr 17, 2024
Feb 10, 2025
Feb 17, 2025
Mar 17, 2024
Feb 26, 2025
Mar 17, 2024
Mar 10, 2025
Feb 19, 2025
May 9, 2021
Nov 11, 2024
Mar 9, 2025
Mar 2, 2025
Mar 25, 2025
Dec 17, 2024
Oct 20, 2024
Feb 25, 2025
Jul 2, 2024
Jan 4, 2024
Aug 18, 2024
May 30, 2024
Sep 19, 2024
Mar 16, 2022
May 31, 2023
Jan 21, 2025
Mar 4, 2024
Aug 18, 2023
Nov 17, 2022
Oct 31, 2024
Sep 2, 2024
Apr 12, 2024
Dec 31, 2024
Jan 21, 2025
Feb 26, 2024
Mar 26, 2025
Nov 1, 2019
Jul 4, 2024
Apr 2, 2025
Apr 18, 2024
Nov 12, 2024
Sep 17, 2024
May 10, 2021
Feb 23, 2023
Oct 4, 2024
Sep 30, 2024
Oct 3, 2024
Mar 24, 2024
Aug 17, 2024
May 1, 2024
Apr 20, 2024
Jan 16, 2025
Aug 17, 2024
Jan 21, 2025
Feb 6, 2024
Mar 5, 2025
Nov 16, 2024
Sep 13, 2024
Sep 13, 2024
Feb 21, 2025
Dec 22, 2024
Apr 1, 2025
Dec 4, 2024
Mar 25, 2025
Mar 27, 2025
Sep 17, 2024
Feb 5, 2025
Mar 26, 2025
Mar 24, 2025
Aug 15, 2024
Aug 15, 2024
Sep 11, 2024
Sep 11, 2024
Sep 25, 2024
Sep 25, 2024
Sep 10, 2024
Aug 15, 2024
Sep 30, 2024
Aug 15, 2024
Aug 17, 2024
Aug 15, 2024
Sep 16, 2024
Sep 30, 2024
Apr 1, 2025
Feb 5, 2025
Aug 15, 2024
Aug 15, 2024
Sep 30, 2024
Sep 2, 2024
Aug 15, 2024
Aug 15, 2024
Mar 15, 2025
Aug 29, 2024
Aug 15, 2024
Dec 24, 2024
Dec 24, 2024
Mar 25, 2025
Aug 15, 2024
Aug 15, 2024
May 17, 2021
Oct 7, 2024
Oct 6, 2024
Sep 13, 2024
Oct 6, 2024
Aug 15, 2024
Apr 1, 2025
Jan 13, 2024
Oct 16, 2024
Feb 2, 2024
Jun 22, 2024
Apr 12, 2023
Apr 4, 2025
Dec 8, 2024
Jun 22, 2024
Sep 30, 2024
Nov 18, 2024
Oct 30, 2024
Jun 22, 2024
Nov 26, 2024
Feb 17, 2025
May 17, 2021
Oct 28, 2024
Oct 11, 2024
Oct 2, 2024
Jul 11, 2024
Oct 23, 2024
Sep 24, 2023
Nov 1, 2019
Jan 24, 2025
Oct 24, 2022
Nov 1, 2019
Mar 29, 2024
Mar 26, 2025

Repository files navigation

Cloning the repository

If you are getting an error while cloning the repository, try running: git config --global http.postBuffer 5000000

This will increase the buffer size from the default 1MiB to 5MiB.

To revert this value to the default, use: git config --global http.postBuffer 1000000

The Courses

"Learn Spring" Course:
>> LEARN SPRING - THE MASTER CLASS

"REST With Spring" Course:
>> THE REST WITH SPRING - MASTER CLASS

"Learn Spring Security" Course:
>> LEARN SPRING SECURITY - MASTER CLASS

Java and Spring Tutorials

This project is a collection of small and focused tutorials - each covering a single and well-defined area of development in the Java ecosystem. A strong focus of these is the Spring Framework - Spring, Spring Boot and Spring Security. In addition to Spring, the modules here cover several aspects of Java.

Profile-based segregation

We use Maven build profiles to segregate the huge list of individual projects in our repository.

The projects are broadly divided into 4 lists: default, default-jdk17, default-jdk8 and default-heavy.

Next, they are segregated further based on the tests that we want to execute.

We also have a parents profile to build only parent modules.

Therefore, we have a total of 9 profiles:

Profile Includes Type of test enabled
default JDK21 projects *UnitTest
integration JDK21 projects *IntegrationTest
default-jdk17 JDK17 projects *UnitTest
integration-jdk17 JDK17 projects *IntegrationTest
default-jdk22 JDK22 projects *UnitTest
integration-jdk22 JDK22 projects *IntegrationTest
default-jdk23 JDK23 projects *UnitTest
integration-jdk23 JDK23 projects *IntegrationTest
default-heavy Heavy/long running projects *UnitTest
integration-heavy Heavy/long running projects *IntegrationTest
default-jdk8 JDK8 projects *UnitTest
integration-jdk8 JDK8 projects *IntegrationTest
parents Set of parent modules None

Building the project

Though it should not be needed often to build the entire repository at once because we are usually concerned with a specific module.

But if we want to, we can invoke the below command from the root of the repository if we want to build the entire repository with only Unit Tests enabled:

mvn clean install -Pdefault,default-heavy

or if we want to build the entire repository with Integration Tests enabled, we can do:

mvn clean install -Pintegration,integration-heavy

Analogously, for the JDK8 projects the commands are:

mvn clean install -Pdefault-jdk8

and

mvn clean install -Pintegration-jdk8

Building a single module

To build a specific module, run the command: mvn clean install in the module directory.

It can happen that your module is part of a parent module e.g. parent-boot-1,parent-spring-5 etc, then you will need to build the parent module first so that you can build your module. We have created a parents profile that you can use to build just the parent modules, just run the profile as: mvn clean install -Pparents

Building modules from the root of the repository

To build specific modules from the root of the repository, run the command: mvn clean install --pl akka-modules,algorithms-modules -Pdefault in the root directory.

Here akka-modules and algorithms-modules are the modules that we want to build and default is the maven profile in which these modules are present.

Running a Spring Boot module

To run a Spring Boot module, run the command: mvn spring-boot:run in the module directory.

Working with the IDE

This repo contains a large number of modules. When you're working with an individual module, there's no need to import all of them (or build all of them) - you can simply import that particular module in either Eclipse or IntelliJ.

Running Tests

The command mvn clean install from within a module will run the unit tests in that module. For Spring modules this will also run the SpringContextTest if present.

To run the integration tests, use the command:

mvn clean install -Pintegration or

mvn clean install -Pintegration-heavy or

mvn clean install -Pintegration-jdk8

depending on the list where our module exists