Spring MVC 튜토리얼

1. 개요

이것은 Java 기반 구성과 XML 구성을 사용하여 Spring MVC 프로젝트를 설정하는 방법을 보여주는 간단한 Spring MVC 튜토리얼 입니다.

Spring MVC 프로젝트에 대한 Maven 종속성은 Spring MVC 종속성 문서에 자세히 설명되어 있습니다.

2. Spring MVC 란?

이름에서 알 수 있듯이 Model-View-Controller 또는 MVC 패턴을 다루는 Spring 프레임 워크의 모듈입니다 . MVC 패턴의 모든 장점과 Spring의 편리함을 결합합니다.

Spring은 DispatcherServlet을 사용하여 프론트 컨트롤러 패턴으로 MVC를 구현 합니다.

요컨대, DispatcherServlet 은 요청을 의도 한 대상으로 라우팅하는 주 컨트롤러 역할을합니다. 모델은 애플리케이션의 데이터 일 뿐이며 뷰는 다양한 템플릿 엔진으로 표현됩니다. 잠시 후 예제에서 JSP를 살펴 보겠습니다.

3. Java 구성을 사용하는 Spring MVC

Java 구성 클래스를 통해 Spring MVC 지원을 활성화하려면 @EnableWebMvc 주석을 추가하기 만하면 됩니다 .

@EnableWebMvc @Configuration public class WebConfig { /// ... }

이렇게하면 컨트롤러 및 매핑 등록, 유형 변환기, 유효성 검사 지원, 메시지 변환기 및 예외 처리와 같은 MVC 프로젝트에 필요한 기본 지원이 설정됩니다.

이 구성을 사용자 정의하려면 WebMvcConfigurer 인터페이스 를 구현해야합니다 .

@EnableWebMvc @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } @Bean public ViewResolver viewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView.class); bean.setPrefix("/WEB-INF/view/"); bean.setSuffix(".jsp"); return bean; } }

이 예제에서는 / WEB-INF / view 디렉토리 에서 .jsp 뷰를 반환 하는 ViewResolver 빈을 등록했습니다 .

여기서 매우 중요한 것은 ViewControllerRegistry를 사용하여 URL과 뷰 이름 사이에 직접 매핑을 생성하는 뷰 컨트롤러를 등록 할 수 있다는 입니다. 이렇게하면 둘 사이에 컨트롤러가 필요하지 않습니다.

컨트롤러 클래스도 정의하고 스캔하려는 경우 컨트롤러 가 포함 된 패키지에 @ComponentScan 주석을 추가 할 수 있습니다 .

@EnableWebMvc @Configuration @ComponentScan(basePackages = { "com.baeldung.web.controller" }) public class WebConfig implements WebMvcConfigurer { // ... }

이 구성을로드하는 애플리케이션을 부트 스트랩하려면 이니셜 라이저 클래스도 필요합니다.

public class MainWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(final ServletContext sc) throws ServletException { AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.scan("com.baeldung"); sc.addListener(new ContextLoaderListener(root)); ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); appServlet.setLoadOnStartup(1); appServlet.addMapping("/"); } }

Spring 5 이전 버전 의 경우 인터페이스 대신 WebMvcConfigurerAdapter 클래스 를 사용해야합니다 .

4. XML 설정을 이용한 Spring MVC

위의 Java 구성 대신 순수한 XML 구성을 사용할 수도 있습니다.

순전히 XML 구성을 사용 하려면 응용 프로그램을 부트 스트랩하기 위해 web.xml 파일도 추가해야 합니다. 이 접근 방식에 대한 자세한 내용은 이전 기사를 확인하십시오.

5. 컨트롤러 및보기

기본 컨트롤러의 예를 살펴 보겠습니다.

@Controller public class SampleController { @GetMapping("/sample") public String showForm() { return "sample"; } }

해당하는 jsp 리소스는 sample.jsp 파일입니다.

JSP 기반 뷰 파일은 프로젝트 의 / WEB-INF 폴더 아래 에 있으므로 직접 URL 액세스가 아닌 Spring 인프라에만 액세스 할 수 있습니다.

6. 부트가있는 스프링 MVC

Spring Boot는 Spring Platform에 추가 된 것으로 독립 실행 형 프로덕션 등급 애플리케이션을 매우 쉽게 시작하고 만들 수 있습니다. Boot 는 Spring을 대체하기위한 것이 아니라 더 빠르고 쉽게 작업 할 수 있도록하기위한 것입니다.

6.1. 스프링 부트 스타터

새로운 프레임 워크는 편리한 시작 종속성을 제공합니다 . 이는 특정 기능에 필요한 모든 기술을 가져올 수 있는 종속성 설명자 입니다.

이것들은 우리가 더 이상 각 종속성에 대한 버전을 지정할 필요가 없지만 대신 스타터가 종속성을 관리 할 수 ​​있도록하는 이점이 있습니다.

시작하는 가장 빠른 방법은 spring-boot-starter-parent pom.xml 을 추가하는 것입니다 .

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

이것은 종속성 관리를 처리합니다.

6.2. 스프링 부트 진입 점

Spring Boot를 사용하여 빌드 된 각 애플리케이션 은 기본 진입 점을 정의하기 만하면됩니다. 일반적으로 @SpringBootApplication 주석이 달린 main 메소드 가있는 Java 클래스입니다 .

@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 

이 주석은 다음과 같은 다른 주석을 추가합니다.

  • @Configuration – 클래스를 빈 정의의 소스로 표시
  • @EnableAutoConfiguration – 클래스 경로에 대한 종속성을 기반으로 빈을 자동으로 추가하도록 프레임 워크에 지시합니다.
  • @ComponentScan – which scans for other configurations and beans in the same package as the Application class or below

With Spring Boot, we can set up frontend using Thymeleaf or JSP's without using ViewResolver as defined in section 3. By adding spring-boot-starter-thymeleaf dependency to our pom.xml, Thymeleaf gets enabled, and no extra configuration is necessary.

The source code for the Boot app is, as always, available over on GitHub.

Finally, if you're looking to get started with Spring Boot, have a look at our reference intro here.

7. Conclusion

In this example we configured a simple and functional Spring MVC project, using Java configuration.

The implementation of this simple Spring MVC tutorial can be found in the GitHub project.

프로젝트가 로컬에서 실행되면 // localhost : 8080 / spring-mvc-basics / sample 에서 sample.jsp에 액세스 할 수 있습니다 .