Spring Boot는 Spring MVC를 사용자 정의합니다.

Spring Boot는 기존의 xml 구성 파일을 버리고 구성 클래스(xml 구성 파일에 해당하는 @Configuration으로 표시된 클래스)를 통해 관련 구성을 JavaBean 형식으로 구성합니다.

Spring MVC의 Spring Boot 자동 구성은 대부분의 요구 사항을 충족할 수 있지만 구성 클래스(@Configuration으로 표시된 클래스)를 사용자 지정하고 인터셉터, 포맷터, 보기 컨트롤러 등과 같은 WebMvcConfigurer 인터페이스를 구현하여 Spring MVC 구성을 사용자 지정할 수도 있습니다. .
SpringBoot 1.5 이전에는 WebMvcConfigurerAdapter 추상 클래스를 상속하여 Spring MVC 구성을 사용자 정의했지만 SpringBoot 2.0 이후에는 WebMvcConfigurerAdapter 추상 클래스가 더 이상 사용되지 않으며 대신 WebMvcConfigurer 인터페이스를 구현하여 Spring MvVC 구성을 사용자 정의합니다.

WebMvcConfigurer는 Spring MVC와 관련된 많은 메서드를 정의하는 Java 8 기반 인터페이스이며 대부분 기본 유형이며 모두 비어 있는 구현입니다. 따라서 WebMvcConfigurer 인터페이스를 구현하기 위한 구성 클래스를 정의하고 해당 메서드를 다시 작성하여 Spring MVC의 구성을 사용자 지정하기만 하면 됩니다.
여기에 이미지 설명 삽입

Spring Boot 프로젝트에서 다음 두 가지 형식으로 Spring MVC를 사용자 지정할 수 있습니다.

Spring MVC를
완전히 대체하도록 Spring MVC 확장

아래에서는 이러한 두 가지 형태의 Spring MVC 커스터마이징을 각각 소개합니다.
Spring MVC 확장
Spring Boot의 Spring MVC 자동 구성이 우리의 요구 사항을 충족할 수 없는 경우 Spring MVC를 확장하기 위해 WebMvcConfigurer 유형(WebMvcConfigurer 인터페이스 구현)의 구성 클래스(@Configuration 레이블이 지정되지만 @EnableWebMvc 주석 클래스는 아님)를 사용자 정의할 수도 있습니다. 이렇게 하면 Spring Boot의 Spring MVC 자동 구성이 유지되고 Spring Boot의 자동 구성이 제공하는 편리함을 누릴 수 있을 뿐만 아니라 사용자 정의 Spring MVC 구성도 추가됩니다.
예 1

  1. spring-boot-adminex라는 이름의 Spring Boot 프로젝트를 만들고 백그라운드 관리 시스템 AdminEx의 css, 글꼴, 이미지 및 js 디렉터리와 정적 리소스를 프로젝트의 src/main/resources/static으로 이동합니다. 디렉터리 구조는 다음과 같습니다. 아래에 나와 있습니다.
    여기에 이미지 설명 삽입

  2. net.biancheng.www.config 패키지에서 MyMvcConfig라는 구성 클래스를 만들고 WebMvcConfigurer 인터페이스를 구현하고 addViewControllers() 메서드를 다시 작성합니다. 코드는 다음과 같습니다.
    package net.biancheng.www.config;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.*;
    // WebMvcConfigurer 인터페이스를 구현하여 SpringMVC의 기능을 확장
    //@ EnableWebMvc Don't take over SpringMVC
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { //"/" 또는 "/index.html"에 액세스할 때 바로 랜딩 페이지 registry.addViewController( "/ ").setViewName("로그인"); registry.addViewController("/index.html").setViewName("로그인"); } }






  3. net.biancheng.www.controller 아래에 IndexController라는 컨트롤러를 생성합니다. 코드는 다음과 같습니다.
    패키지 net.biancheng.www.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web .bind.annotation.RequestMapping;
    @Controller
    public class IndexController { /**

    • 방문 페이지로 이동
    • @return
      */
      @GetMapping(value = {"/login"})
      public String loginPage() { //로그인 페이지로 이동 login.html return "login"; } }



  4. AdminEx의 login.html(로그인 페이지)을 src/main/resources/templates로 이동하면 아래와 같은 구조가 됩니다.
    여기에 이미지 설명 삽입

2:login.html

  1. Spring Boot를 시작하면 "http://localhost:8080/login", "http://localhost:8080/" 및 "http://localhost:8080/index.html"이 방문 페이지로 이동할 수 있음을 알 수 있습니다. login.html 결과는 아래와 같습니다.
    여기에 이미지 설명 삽입


그림 3: Spring MVC를 완전히 인수하기 위한 랜딩 페이지(원본 사진을 보려면 사진을 클릭)
일부 특수한 경우 Spring Boot에서 Spring MVC의 모든 자동 구성을 포기하고 Spring MVC를 완전히 인수해야 할 수 있습니다. 이 시점에서 WebMvcConfigurer 유형의 구성 클래스(WebMvcConfigurer 인터페이스 구현)를 사용자 정의하고 이 클래스에 @EnableWebMvc 주석을 표시하여 Spring MVC를 완전히 인수할 수 있습니다.

참고: Spring MVC가 완전히 인수된 후에는 Spring Boot의 Spring MVC 자동 구성이 무효화됩니다.
예 2

  1. MyMvcConfig 구성 클래스에 @EnableWebMvc를 표시하고 다른 파일을 변경하지 마십시오. 코드는 다음과 같습니다.
    package net.biancheng.www.config;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.*;
    // WebMvcConfigurer 인터페이스를 구현하여 SpringMVC의 기능을 확장
    @EnableWebMvc / / SpringMVC 완전 인계
    @Configuration
    public class MyMvcConfig 구현 WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { //"/" 또는 "/index.html" 액세스 시 바로 랜딩 페이지로 이동 registry.addViewController("/ ").setViewName("로그인"); registry.addViewController("/index.html").setViewName("로그인"); } }






  2. Spring Boot를 시작하고 브라우저 주소 표시줄에 "http://localhost:8080/"을 입력하여 로그인 페이지에 액세스하면 결과는 아래 그림과 같습니다.
    여기에 이미지 설명 삽입

Spring mvc를 완전히 인수한 후 로그인 페이지
그림 4: 로그인 페이지에 액세스하기 위해 Spring MVC를 완전히 인수

  1. 브라우저의 주소창에 "http://localhost:8080/css/style.css"를 입력하여 login.html에서 참조하는 css 스타일 시트에 접근하면 아래 그림과 같습니다.
    여기에 이미지 설명 삽입

Spring mvc 정적 리소스의 전체 인계 실패
그림 2: 정적 리소스에 대한 Spring MVC 액세스의 전체 인계

우리는 Spring Boot가 Spring MVC의 기본 자동 구성에 정의된 정적 리소스 폴더에 있는 정적 파일에 액세스할 수 있음을 알고 있습니다. 정적 리소스 폴더의 정적 리소스는 404 오류를 보고합니다.

추천

출처blog.csdn.net/weixin_64842782/article/details/125106786