Ответ
Типичное Java веб-приложение строится по многоуровневой архитектуре (чаще всего 3-слойной) и включает следующие ключевые компоненты:
1. Уровень представления (Presentation Layer / Controller):
- Задача: Обработка HTTP-запросов и формирование ответов (HTML, JSON, XML).
- Технологии: Spring MVC (
@Controller,@RestController), JAX-RS (Jakarta REST), сервлеты. -
Пример REST-контроллера на Spring Boot:
@RestController @RequestMapping("/api/products") @RequiredArgsConstructor // Lombok для инъекции зависимости public class ProductController { private final ProductService productService; @GetMapping public ResponseEntity<List<ProductDto>> getAll() { return ResponseEntity.ok(productService.findAll()); } @PostMapping public ResponseEntity<ProductDto> create(@Valid @RequestBody ProductDto dto) { return ResponseEntity.status(HttpStatus.CREATED) .body(productService.create(dto)); } }
2. Бизнес-уровень (Business Layer / Service):
- Задача: Содержит основную бизнес-логику, правила, транзакции.
- Технологии: Spring Beans (
@Service,@Transactional), EJB.
3. Уровень доступа к данным (Data Access Layer / Repository):
- Задача: Абстракция для работы с хранилищами данных (БД, кэш).
- Технологии: Spring Data JPA (
@Repository), Hibernate, JDBC, JdbcTemplate.
4. Дополнительные ключевые компоненты:
- Модель данных (Entity/DTO):
@Entityдля JPA, Data Transfer Objects для обмена между слоями. - Конфигурация и Dependency Injection (DI): Spring Core для управления бинами и инверсии контроля.
- Безопасность: Spring Security для аутентификации и авторизации.
- Клиентская часть: Может быть отдельным SPA (React, Angular) или серверным рендерингом (Thymeleaf, JSP).
Принципы: Разделение ответственности (SoC), инъекция зависимостей (DI), использование шаблонов проектирования (например, MVC, DTO), обеспечение безопасности на всех уровнях.