← Назад к вопросам

Как будешь реализовывать 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

  1. Разделение ответственности
  2. Тестируемость
  3. Масштабируемость
  4. Переиспользование кода
  5. Поддерживаемость

Запуск приложения

mvn spring-boot:run

Приложение доступно на http://localhost:8080