Spring Boot Zomerfestivals
1. User Login (ROLE_USER)
Logging in as a regular user to access the festival catalog.
1. Introduction & Overview
Spring Boot Zomerfestivals is an enterprise Java web application developed for the Enterprise Web Development Java (EWDJ) course at HOGENT (2024). The application provides a comprehensive management platform for summer music festivals, performances, genres, regions and user ticket reservations.
The application leverages Java 21 and Spring Boot 3.3, utilizing Spring Data JPA, Hibernate ORM, Spring Security and robust validation & exception handling to deliver a secure, scalable backend coupled with dynamic Thymeleaf MVC views.
2. Technical Architecture & Tech Stack
Enterprise Java Stack
- Java 21 & Spring Boot 3.3.1: Modern LTS Java runtime with Spring Boot starter framework.
- Spring Data JPA & Hibernate 6 ORM: Data persistence layer with repository pattern (
FestivalRepository,GenreRepository,PerformanceRepository,TicketRepository,UserRepository). - Spring Security 6: Role-based access control (RBAC) with administrator and regular-user roles, BCrypt password hashing and custom
UserDetailsService. - Validation & Exception Handling: Custom
PerformanceValidatorand Spring@Validbean validation rendering explicit red error messages next to each input field via Thymeleafth:errors, coupled with@ControllerAdvicefor global HTTP exception management. - Ticket Order Validation: Business rules restricting ticket orders (maximum 15 tickets per festival, maximum 50 total tickets per user account and available ticket capacity check).
- MySQL 8 & HikariCP: High-performance relational database persistence with HikariCP connection pooling and automated schema initialization (
InitializeData.java). - Spring Web Services & REST API: SOAP Web Services with WS-Addressing alongside JSON REST Controllers (
FestivalRestController). - Testing: JUnit 5, Mockito and Spring Boot Test integration suite (
FestivalControllerTest,PerformanceControllerTests,TicketControllerTest).
3. Core Features
🎪 Festival & Lineup Management
- Festival Catalog (Festival #1 & #2): Browse summer festivals filtered by music genres (Techno, Rock, Pop, Classical, Electronic, Indie Rock) and regions (Amsterdam, Brussels, Antwerp, Gent, Lokeren, Rotterdam).
- Performance Lineups: Schedule artists, set stage times and assign subgenres for festival stages.
- Ticket Reservations (
ROLE_USER): Real-time ticket order processing, capacity management, ticket limits and personal order history (/tickets/myTickets).
🔐 Security & Validation Control
- Public Access: Guest browsing of festival lineups, dates and regions.
- Registered User (
ROLE_USER): Book festival tickets, view personal ticket history and manage account details. - Administrator (
ROLE_ADMIN—admin/admin): Add and edit festival performances, handle form validations and manage exception states.
1. Introductie & Projectomschrijving
Spring Boot Zomerfestivals is een enterprise Java webapplicatie ontwikkeld in het kader van het opleidingsonderdeel Enterprise Web Development Java (EWDJ) aan HOGENT (2024). Het platform biedt een uitgebreid beheersysteem voor zomerfestivals, optredens, genres, locaties/regio’s en ticketreserveringen.
De applicatie maakt gebruik van Java 21 en Spring Boot 3.3, ondersteund door Spring Data JPA, Hibernate ORM, Spring Security, en uitgebreide formuliervalidatie en foutafhandeling voor een robuuste backend en dynamische Thymeleaf MVC-views.
2. Technologische Architectuur & Tech Stack
Enterprise Java Stack
- Java 21 & Spring Boot 3.3.1: Moderne LTS Java runtime met Spring Boot starter framework.
- Spring Data JPA & Hibernate 6 ORM: Datapersistentielaag met repository patroon (
FestivalRepository,GenreRepository,PerformanceRepository,TicketRepository,UserRepository). - Spring Security 6: Rolgebaseerde autorisatie (RBAC) met administrator- en gewone gebruikersrollen, BCrypt wachtwoord-hashing en custom
UserDetailsService. - Validatie & Exception Handling: Custom
PerformanceValidatoren Spring@Validbean-validatie die expliciete rode foutmeldingen onder elk invoerveld toont via Thymeleafth:errors, gekoppeld aan@ControllerAdvicevoor globale HTTP foutafhandeling. - Ticket Bestelvalidatie: Bedrijfslogica die ticketbestellingen beperkt (maximaal 15 tickets per festival, maximaal 50 totale tickets per gebruikersaccount en controle van de beschikbare capaciteit).
- MySQL 8 & HikariCP: Prestatiegerichte relationele databank met HikariCP connection pooling en geautomatiseerde schema-initialisatie (
InitializeData.java). - Spring Web Services & REST API: SOAP Web Services met WS-Addressing en JSON REST Controllers (
FestivalRestController). - Testen: JUnit 5, Mockito en Spring Boot Test integratiesuite (
FestivalControllerTest,PerformanceControllerTests,TicketControllerTest).
3. Kernfunctionaliteiten
🎪 Festival- & Line-up Beheer
- Festivalcatalogus (Festival #1 & #2): Blader door zomerfestivals gefilterd op muziekgenres (Techno, Rock, Pop, Klassiek, Electronic, Indie Rock) en regio’s (Amsterdam, Brussel, Antwerpen, Gent, Lokeren, Rotterdam).
- Optredens & Line-ups: Artiesten inplannen met specifieke podia, tijden en subgenres.
- Ticketreserveringen (
ROLE_USER): Real-time ticketverwerking, capaciteitsbeheer, ticketlimieten en persoonlijk besteloverzicht (/tickets/myTickets).
🔐 Beveiliging, Validatie & Foutafhandeling
- Publieke Toegang: Bekijken van festivals, datums en locaties.
- Ingelogde Gebruiker (
ROLE_USER): Tickets bestellen en eigen besteloverzicht beheren. - Beheerder (
ROLE_ADMIN—admin/admin): Optredens toevoegen, formuliervalidatie verwerken en uitzonderingssituaties beheren.
