Учебный проект на Spring Boot - веб-приложение для управления сообщениями пользователей.
- Java 17
- Spring Boot 3.2.0
- Spring Web MVC
- Spring Security 6 (совместимость с Jakarta EE)
- Spring Data JPA
- Apache Freemarker (шаблонизатор)
- PostgreSQL (база данных)
- Maven (инструмент сборки)
src/main/java/com/example/sweater/
├── Application.java # Точка входа приложения
├── config/ # Классы конфигурации
│ ├── MvcConfig.java # Конфигурация MVC
│ └── WebSecurityConfig.java # Конфигурация безопасности
├── controller/ # Контроллеры
│ ├── MainController.java
│ ├── RegistrationController.java
│ └── UserController.java
├── domain/ # Сущности
│ ├── Message.java
│ ├── Role.java
│ └── User.java
├── repos/ # Репозитории
│ ├── MessageRepo.java
│ └── UserRepo.java
└── service/ # Слой бизнес-логики
├── MessageService.java # Сервис сообщений
└── UserService.java # Сервис пользователей
- Регистрация и аутентификация пользователей
- Хеширование паролей (BCrypt)
- Ролевая модель доступа (Spring Security)
- Управление сообщениями с пагинацией
- Редактирование профиля пользователя
- Веб-интерфейс на Freemarker шаблонах
- Валидация входных данных
- JDK 17 или выше
- Maven 3.9.x или выше
- PostgreSQL (локально или удалённо)
Подключение к PostgreSQL настраивается через переменные окружения или значения по умолчанию в application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/sweater_db
spring.datasource.username=${DB_USERNAME:postgres}
spring.datasource.password=${DB_PASSWORD:postgres}
spring.jpa.hibernate.ddl-auto=updateРекомендуется использовать переменные окружения для продакшена:
export DB_USERNAME=your_username
export DB_PASSWORD=your_secure_passwordCREATE DATABASE sweater_db;mvn clean packagemvn spring-boot:runИли запустить скомпилированный JAR:
java -jar target/sweater-1.0-SNAPSHOT.jarПосле запуска откройте браузер и перейдите по адресу:
http://localhost:8080
Приложение построено по принципу разделения ответственности:
- Контроллеры (Controller) - обработка HTTP-запросов и возврат представлений
- Сервисы (Service) - бизнес-логика, валидация, транзакции
- Репозитории (Repository) - доступ к данным через Spring Data JPA
- Доменная модель (Domain) - сущности базы данных
- Пароли хранятся в хешированном виде (BCrypt)
- Настроена ролевая модель (USER, ADMIN)
- Защита от CSRF-атак
- Валидация входных данных на уровне сервиса
- Пагинация сообщений (10 записей на страницу)
- Ленивая загрузка связанных сущностей (FetchType.LAZY)
- Оптимизированные запросы к базе данных
Проект использует Spring Boot DevTools для горячей перезагрузки во время разработки.
- ✅ Хеширование паролей при регистрации
- ✅ Удаление хардкода учётных данных БД
- ✅ Валидация входных данных
- ✅ Слой сервисов для бизнес-логики
- ✅ Принцип единой ответственности (SRP)
- ✅ Пагинация данных
- ✅ Обработка ошибок
Учебный проект для изучения фреймворка Spring Boot.