This repository contains a collection of 32 small example projects built primarily with Spring Boot, showcasing various functionalities, integrations, and best practices. Each project is designed to demonstrate a specific concept or technology, providing a clear and concise example.
- Port Number Configuration: To change the default port number for any Spring Boot application, you can modify the
server.port
property in theapplication.properties
file located insrc/main/resources/application.properties
. For example:server.port=8182
- Database Schema Generation: For projects utilizing JPA and Hibernate, you can configure automatic database table generation by setting
spring.jpa.hibernate.ddl-auto
inapplication.properties
.create
: Tables will be created from scratch every time the application starts.update
: Existing tables will be updated, and new tables will be created if they don't exist, preserving existing data. It's recommended to useupdate
for persistence after initial setup.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
https://www.logicbig.com/
https://howtodoinjava.com/
https://o7planning.org/
https://www.concretepage.com/spring-boot/
https://memorynotfound.com/
https://www.dineshonjava.com/
- Description: A foundational "Hello World" example demonstrating the absolute basics of setting up and running a Spring Boot application.
- Technologies: Spring Boot.
- Database: PostgreSQL (default).
- Links:
http://localhost:3092/
,http://localhost:3092/welcome
- Description: Demonstrates how to integrate and render JavaServer Pages (JSP) as view templates within a Spring Boot application.
- Technologies: Spring Boot, JSP.
- Database: PostgreSQL (default).
- Links:
http://localhost:8182/
,http://localhost:8182/personels
- Description: Shows how to implement custom error pages (e.g., 404, 403) in a Spring Boot application by placing HTML files in
src/main/resources/public/error/
. - Technologies: Spring Boot, HTML.
- Database: PostgreSQL (default).
- Usage: Accessing non-existent paths like
http://localhost:8182/deneme
will display the custom error page.
- Description: A static REST API example demonstrating basic HTTP methods (GET, POST, PUT, DELETE) for CRUD operations. Includes JUnit tests for API interaction.
- Technologies: Spring Boot, REST API, JUnit.
- Database: PostgreSQL (default).
- Usage: Run
PersonelClinicRestControllerTest.java
for testing. Data changes can be observed atlocalhost:8182/rest/personels
.
- Description: Demonstrates using JDBC with an in-memory H2 database. Includes examples of creating schemas, tables, and inserting data using
data.sql
andschema.sql
. - Technologies: Spring Boot, JDBC, H2 Database, REST API.
- Database: H2.
- Usage: Examine
src/main/resources/data.sql
&schema.sql
. RuncreatePersonelTest
,deletePersonelTest
inPersonelClinicRestControllerTest.java
.
- Description: Illustrates the integration of JPA (Java Persistence API) with an H2 in-memory database for data persistence. Focuses on core JPA annotations like
@Transactional
,@Id
,@GeneratedValue
,@Entity
,@Table
, and@Column
. - Technologies: Spring Boot, JPA, H2 Database, REST API.
- Database: H2.
- Description: A basic Spring Security example showcasing login, logout, custom login pages, and "remember me" functionality with static user credentials defined in
application.properties
. - Technologies: Spring Boot, Spring Security.
- Database: PostgreSQL (default).
- Configuration: User credentials can be changed in
application.properties
.
- Description: Demonstrates basic CRUD (Create, Read, Update, Delete) operations using JPA with a PostgreSQL database. Includes instructions for setting up the
customer
table in pgAdmin 4. - Technologies: Spring Boot, JPA, PostgreSQL.
- Database: PostgreSQL.
- Usage: First,
localhost:8182/save
to insert data, thenlocalhost:8182/findall
,localhost:8182/findbyid?id=3
,localhost:8182/findbylastname?lastname=Terim
.
- Description: An example of role-based authorization using Spring Security with an H2 database. Different roles (ROLE_EDITOR, ROLE_ADMIN, ROLE_USER) have varying access levels to specific endpoints. Shows both plaintext and bcrypt-encrypted passwords.
- Technologies: Spring Boot, Spring Security, H2 Database, Role-Based Authorization, Bcrypt.
- Database: H2.
- Configuration: User roles and passwords are defined in
src/main/resources/data.sql
. Includes aPasswordEncoderTest.java
for generating encrypted passwords.
- Description: Combines JPA, PostgreSQL, RESTful services, and JSP for a comprehensive CRUD application. Provides both REST endpoints and JSP views for managing data.
- Technologies: Spring Boot, JPA, PostgreSQL, REST API, JSP.
- Database: PostgreSQL.
- Usage:
localhost:8182/
,localhost:8182/customers
,localhost:8182/customer/1
,localhost:8182/rest/customers
,localhost:8182/rest/customer/1
.
- Description: Focuses on advanced JPA mappings, specifically
@OneToOne
relationships,@JoinColumn
, and@JsonIgnore
annotations, demonstrating data handling across multiple tables in PostgreSQL. - Technologies: Spring Boot, Spring Data JPA, PostgreSQL,
@OneToOne
,@JoinColumn
,@JsonIgnore
. - Database: PostgreSQL.
- Usage:
localhost:8182/insert
to populate data. Thenlocalhost:8182/details
,localhost:8182/customers
,localhost:8182/customer/{id}
,localhost:8182/customerjson/{id}
.
- Description: Explores
@ManyToOne
relationships in Spring Data JPA with PostgreSQL, along with the use of@Query
annotation for custom SQL queries. - Technologies: Spring Boot, Spring Data JPA, PostgreSQL,
@ManyToOne
,@Query
. - Database: PostgreSQL.
- Usage:
localhost:8182/insert
to populate data. Thenlocalhost:8182/books
,localhost:8182/book/{id}
,localhost:8182/customers
,localhost:8182/customer/{id}
.
- Description: Demonstrates the use of
@Embeddable
and@Embedded
annotations in Spring Data JPA with Hibernate and PostgreSQL, for embedding complex types within entities. - Technologies: Spring Boot, Spring Data JPA, Hibernate, PostgreSQL,
@Embeddable
,@Embedded
. - Database: PostgreSQL.
- Usage:
localhost:8182/insert_car
to insert data. REST operations via Postman (localhost:8182/car
for POST,localhost:8182/car/{id}
for PUT/DELETE). Browser links:localhost:8182/car1/{id}
,localhost:8182/car2/{id}
,localhost:8182/car_with_name/{name}
,localhost:8182/car_with_model/{model}
.
- Description: Integrates Thymeleaf with Spring Data JPA and PostgreSQL, showcasing
@OneToMany
and@ManyToOne
relationships in a web application. - Technologies: Spring Boot, Spring Data JPA, Thymeleaf, PostgreSQL,
@OneToMany
,@ManyToOne
. - Database: PostgreSQL.
- Usage:
localhost:8182/rest/insert
to populate data. Thenlocalhost:8182/customers
,localhost:8182/rest/customers
,localhost:8182/rest/cust
.
- Description: A simple Spring Security example with JPA and PostgreSQL, demonstrating role-based access control using
@Secured
annotation and static user credentials defined inwebConfigurationClass.java
. - Technologies: Spring Boot, Spring Security, JPA, PostgreSQL,
@Secured
. - Database: PostgreSQL.
- User Credentials:
admin / admin / ADMIN
celal / celal / USER
arda / arda / EDITOR
- Access Links:
PermitAll
:localhost:8182/userinfo/
ADMIN
:localhost:8182/rest/customers/
USER
:localhost:8182/rest/customers/
,localhost:8182/rest/customer-by-email/{email}/
,localhost:8182/customer/{email}/
,localhost:8182/rest/customerbyname/{name}
EDITOR
:localhost:8182/rest/cust/
,localhost:8182/rest/customer-by-name/{name}/
- Description: Focuses on
@ManyToMany
relationships and@JoinTable
annotation in Spring Data JPA with Thymeleaf and PostgreSQL, demonstrating how to handle many-to-many associations between entities. - Technologies: Spring Boot, Spring Data JPA, Thymeleaf, PostgreSQL,
@ManyToMany
,@JoinTable
. - Database: PostgreSQL.
- Description: A comprehensive example of user registration and login functionality using Spring Security with JPA and PostgreSQL. Includes a video demonstration.
- Technologies: Spring Boot, Spring Security, JPA, Hibernate, PostgreSQL, Thymeleaf, Bootstrap.
- Database: PostgreSQL.
- Video:
- Description: Demonstrates how to integrate and use MongoDB as the NoSQL database for a Spring Boot application. Covers basic CRUD operations with MongoDB.
- Technologies: Spring Boot, MongoDB.
- Database: MongoDB.
- Description: An example showcasing message queuing with RabbitMQ in a Spring Boot application. Demonstrates producer and consumer patterns for asynchronous communication.
- Technologies: Spring Boot, RabbitMQ.
- Database: PostgreSQL (default).
- Description: A full-stack application demonstrating JWT (JSON Web Token) based authentication with a Spring Boot backend and a React.js frontend, without using Redux for state management.
- Technologies: Spring Boot, React.js, JWT, REST API.
- Database: PostgreSQL (default).
- Description: A full-stack application similar to project 20, but integrating Redux for centralized state management in the React.js frontend, along with JWT authentication and a Spring Boot backend.
- Technologies: Spring Boot, React.js, Redux, JWT, REST API.
- Database: PostgreSQL (default).
- Description: Extends JWT authentication to implement role-based access control. Demonstrates how to issue and validate JWTs with user roles, and secure endpoints based on those roles.
- Technologies: Spring Boot, JWT, Role-Based Security, REST API.
- Database: PostgreSQL (default).
- Description: Illustrates the concept of base model inheritance in JPA with PostgreSQL, specifically using
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
to manage common fields across multiple entities. - Technologies: Spring Boot, JPA, PostgreSQL, Inheritance.
- Database: PostgreSQL.
- Reference: See
Transaction.java
for an example of the inheritance strategy.
- Description: Provides examples of writing unit tests for Spring Boot applications, covering various components like services, repositories, and controllers, using JUnit and Mockito.
- Technologies: Spring Boot, JUnit, Mockito.
- Database: PostgreSQL (default).
- Description: Demonstrates integration of Elastic Search with a Spring Boot application for powerful full-text search and analytical capabilities.
- Technologies: Spring Boot, Elastic Search.
- Database: PostgreSQL (default, for primary data if any).
- Description: Showcases the implementation of Kafka producers and consumers in Spring Boot for real-time data streaming, along with scheduled tasks for automated operations.
- Technologies: Spring Boot, Apache Kafka, Scheduled Tasks.
- Database: PostgreSQL (default).
- Description: Explores advanced PostgreSQL features by demonstrating how to create and use database triggers, and how to listen for these trigger events from a Java Spring Boot application.
- Technologies: Spring Boot, PostgreSQL, Database Triggers, Java Listeners.
- Database: PostgreSQL.
- Description: A real-time communication example using WebSockets with a Spring Boot backend and a React.js frontend. Ideal for chat applications or live data updates.
- Technologies: Spring Boot, React.js, WebSockets.
- Database: PostgreSQL (default).
- Description: Focuses on configuring and utilizing logging frameworks (e.g., Logback, Log4j2) in a Spring Boot application, demonstrating different log levels and output destinations.
- Technologies: Spring Boot, Logging (Logback/Log4j2).
- Database: PostgreSQL (default).
- Description: Implements common architectural patterns using base classes for requests, entities, and responses to promote code reusability and maintainability in a Spring Boot application.
- Technologies: Spring Boot, Design Patterns.
- Database: PostgreSQL (default).
- Description: A reactive Spring Boot application using WebFlux, incorporating Spring Security for authentication/authorization, MongoDB for data storage, implementing rate limiting for API protection., Logging to Mongo Db per request and response (headers,body, all of parameters).
- Technologies: Spring Boot WebFlux, Spring Security, MongoDB, Rate Limiting.
- Database: MongoDB.
- Description: A comprehensive reactive application built with Spring Boot WebFlux, featuring Spring Security, robust logging, API rate limiting, and MongoDB persistence.
- Technologies: Spring Boot WebFlux, Spring Security, Logging, Rate Limiting, MongoDB.
- Database: MongoDB.