← Назад к вопросам
Как будешь реализовывать MVC приложение с нуля
2.7 Senior🔥 121 комментариев
#SOLID и паттерны проектирования#Spring Framework
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Как реализовать MVC приложение с нуля
MVC (Model-View-Controller) — архитектурный паттерн разделения ответственности. Вот пошаговый подход к созданию MVC приложения на Java с нуля.
Шаг 1: Установка зависимостей
Для web MVC приложения используем Spring Framework:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Шаг 2: Model (Модель данных)
Модель представляет бизнес-логику и данные:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String fullName;
}
Шаг 3: Repository (Доступ к данным)
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
Шаг 4: Service (Бизнес-логика)
Service содержит бизнес-логику:
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public UserDTO createUser(CreateUserRequest request) {
User user = new User();
user.setEmail(request.getEmail());
user.setFullName(request.getFullName());
User savedUser = userRepository.save(user);
return mapToDTO(savedUser);
}
public UserDTO getUserById(Long id) {
User user = userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("User not found"));
return mapToDTO(user);
}
private UserDTO mapToDTO(User user) {
return new UserDTO(user.getId(), user.getEmail(), user.getFullName());
}
}
Шаг 5: Controller (Контроллер)
Controller обрабатывает HTTP запросы:
@RestController
@RequestMapping("/api/v1/users")
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
@PostMapping
public ResponseEntity<UserDTO> createUser(@RequestBody CreateUserRequest request) {
UserDTO userDTO = userService.createUser(request);
return ResponseEntity.status(HttpStatus.CREATED).body(userDTO);
}
@GetMapping("/{id}")
public ResponseEntity<UserDTO> getUser(@PathVariable Long id) {
UserDTO userDTO = userService.getUserById(id);
return ResponseEntity.ok(userDTO);
}
}
Шаг 6: Конфигурация (application.properties)
server.port=8080
spring.datasource.url=jdbc:postgresql://localhost:5432/mvc_app
spring.datasource.username=postgres
spring.jpa.hibernate.ddl-auto=update
Шаг 7: Main Application
@SpringBootApplication
public class MvcApplication {
public static void main(String[] args) {
SpringApplication.run(MvcApplication.class, args);
}
}
Структура проекта
mvc-app/
src/main/java/com/example/
entity/User.java
dto/UserDTO.java
repository/UserRepository.java
service/UserService.java
controller/UserController.java
MvcApplication.java
src/main/resources/
application.properties
Поток выполнения запроса
HTTP Request → Controller → Service → Repository → Database → Response
Преимущества MVC
- Разделение ответственности
- Тестируемость
- Масштабируемость
- Переиспользование кода
- Поддерживаемость
Запуск приложения
mvn spring-boot:run
Приложение доступно на http://localhost:8080