Рубрики
Без рубрики

Шаблон проектирования MVC

Шаблон проектирования MVC, шаблон MVC, контроллер представления модели на java, что такое mvc-фреймворк, архитектура шаблона mvc, код приложения весенней загрузки шаблона mvc

Автор оригинала: Pankaj Kumar.

Шаблон проектирования MVC является одним из старейших архитектурных шаблонов для веб-приложений . MVC расшифровывается как Контроллер представления модели. MVC Шаблон проектирования используется для разделения логики разных уровней в программе на независимые блоки. Это известно как принцип Разделения интересов .

Шаблон проектирования MVC

С помощью шаблона проектирования MVC у нас есть следующие компоненты, от которых зависит наш дизайн:

  • Модель, которая переносится с одного слоя на другой.
  • Представление, которое отвечает за отображение данных, присутствующих в приложении.
  • Контроллер отвечает за принятие запроса от пользователя, изменение модели и отправку ее в представление, которое отображается пользователю.

Идея, лежащая в основе шаблона MVC, заключается в очень четком разделении между объектами домена, представляющими объекты реального мира, и уровнем представления, который мы видим на экране. Объекты домена должны быть полностью независимыми и также должны работать без слоя представления.

В этом уроке мы попытаемся создать сильный пример MVC с приложением Spring Boot, которое использует Thymeleaf на уровне представления.

Архитектура приложения MVC

Прежде чем мы начнем создавать ваше приложение, всегда полезно структурировать его. Основываясь на шаблоне MVC, в нашем приложении будут следующие слои:

Пример шаблона MVC

Поскольку мы будем создавать приложение Spring Boot на основе шаблона MVC, мы начнем с создания проекта на основе Maven и добавим в него зависимости, связанные с Spring Boot.


  org.springframework.boot
  spring-boot-starter-parent
  1.5.7.RELEASE
   



  UTF-8
  UTF-8
  1.8



  
    org.springframework.boot
    spring-boot-starter-data-jpa
  
  
    org.springframework.boot
    spring-boot-starter-web
  
  
    org.springframework.boot
    spring-boot-starter-thymeleaf
  
  
    com.h2database
    h2
    runtime
  
  
    org.springframework.boot
    spring-boot-starter-test
    test
  



  
    
      org.springframework.boot
      spring-boot-maven-plugin
    
  

Теперь давайте начнем с определения нашей модели.

Модель MVC

Давайте начнем определять фигуры и сначала перейдем к нашей модели. Первым шагом для примера приложения является определение нашего класса M odel:

package com.journaldev.mvcpattern.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;
    private String name;
    private int age = 0;

    //standard getters and setters
}

Это простой класс модели, который может содержать информацию о человеке. Давайте использовать определенную модель в нашем Контроллере и Сервисе.

Контроллер MVC

Теперь, когда мы знаем, какие данные передавать в модели, давайте определим контроллер C , позволяющий пользователю запрашивать эти данные:

package com.journaldev.mvcpattern.controller;

import com.journaldev.mvcpattern.model.Person;
import com.journaldev.mvcpattern.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class PersonController {

    @Autowired
    PersonService personService;

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String greetingForm(Model model) {
        model.addAttribute("person", new Person());
        return "greeting";
    }

    @RequestMapping(value = "/person", method = RequestMethod.POST)
    public String addPerson(Model model, @ModelAttribute Person person) {
        personService.createPerson(person);
        model.addAttribute("people", personService.getAllPersons());
        return "result";
    }
}

В контроллере выше мы определили два API:

  1. Базовый URL-адрес приложения представляет собой простое представление, которое мы разработаем далее.
  2. URL-адрес /person приложения представляет собой простое представление, в котором данные о человеке сведены в таблицу.

Мы увидим виды через минуту. До этого нам также необходимо предоставить уровень сервиса и репозитория.

package com.journaldev.mvcpattern.service;

import com.journaldev.mvcpattern.model.Person;
import java.util.List;

public interface PersonService {
    Person createPerson(Person person);
    List getAllPersons();
}

Реализация интерфейса выглядит следующим образом:

package com.journaldev.mvcpattern.service;

import com.journaldev.mvcpattern.dal.PersonRepository;
import com.journaldev.mvcpattern.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class PersonServiceImpl implements PersonService {

    @Autowired
    private PersonRepository personRepository;

    @Override
    public Person createPerson(Person person) {
        return personRepository.save(person);
    }

    @Override
    public List getAllPersons() {
        return personRepository.findAll();
    }
}

Наконец, уровень DAL, интерфейс репозитория выглядит следующим образом:

package com.journaldev.mvcpattern.dal;

import com.journaldev.mvcpattern.model.Person;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PersonRepository extends JpaRepository {
}

Превосходно! Теперь, когда мы закончили с логикой доступа ко всем службам и БД, мы можем, наконец, попробовать наш взгляд.

Представление MVC

Давайте, наконец, поставим наш V iew на место. Сначала мы определяем наш greetings.html страница в src/главная/ресурсы/шаблоны каталог.





    Spring Boot MVC
    


Add new person

Name:

Age:

Далее мы определяем наш result.html страница также:





    Spring Boot MVC
    


Person List

Id Name Age

Тест шаблона MVC

Теперь мы наконец-то можем запустить наше приложение, чтобы увидеть его в действии. Но здесь в центре внимания было не приложение. Основное внимание было сосредоточено на том, чтобы три компонента были полностью разделены, что было замечательно наблюдать. Однако на изображениях ниже показаны результаты проекта.

Преимущества шаблона проектирования MVC

Есть много преимуществ для использования шаблона MVC. Давайте изложим некоторые из них здесь:

  1. MVC позволяет быстро разрабатывать приложения. Если мы просто заранее определим уровень модели и передадим эту информацию команде разработчиков пользовательского интерфейса, они смогут начать создавать представления параллельно, поскольку внутренние разработчики разрабатывают контроллеры приложений и логику, лежащую в их основе, что приведет к более быстрой разработке.
  2. При изменении механизма представления уровень контроллера даже не должен знать, куда направляются данные. Он знает только логическое имя представления и даже не расширение HTML. Таким образом, очень легко переключиться на угловой вид, не влияя на контроллер.
  3. Шаблон MVC делает акцент на низкой связи между различными компонентами приложения. Таким образом, уровень представления не зависит от уровня обслуживания, и от него зависит только контроллер, даже если это связано с интерфейсами, а не с конкретной реализацией.

Вывод шаблона MVC

В этой статье мы узнали, как мы можем использовать шаблон проектирования MVC, чтобы подчеркнуть, что различные слои полностью разделены, и поэтому наши компоненты слабо связаны.

Шаблоны проектирования просто основаны на способе программирования и поэтому не зависят от языка и структуры. Не стесняйтесь оставлять свои мнения в комментариях ниже. Загрузите пример проекта MVC по ссылке ниже.

Ссылка: Википедия