programing

spring-boot 어플리케이션에 @EnableWebMvc가 필요 없는 이유

iphone6s 2023. 3. 8. 20:51
반응형

spring-boot 어플리케이션에 @EnableWebMvc가 필요 없는 이유

그래서 저는 작은 어플을 썼고, 기본을 익히기 위해 최대한 간단하게 만들었습니다.Config.java 파일로 간단한 mvc 어플리케이션을 만들었는데, 어플리케이션이 에러를 발생시켜야 한다고 생각했을 때 실제로 동작합니다.

여기 pom.xml이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency> 
        <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

뷰 리졸바만 있는 마이 컨피규레이션파일:

package com.example.demo;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;

import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;


@Configuration
public class DemoConfig {

    @Bean
    public ViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();
        bean.setViewClass(JstlView.class);
        bean.setPrefix("/templates/");
        bean.setSuffix(".html");
        return bean;
    }
}

메인 파일

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

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

마지막으로 컨트롤러 클래스: package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class TestController {
    @GetMapping(value="home")
    public String home() {
        return "home";
    }
}

Application.properties

server.servlet.context-path=/demo

, ,어어 so so so so so so so so so so so so so so so so so가 필요해요.기억할 수 있듯이mvc:annotation- driven 또는 web.xml 또 。@enablewebmvc@getmapping ★★★★★★★★★★★★★★★★★」@controller하지만 내 어플리케이션은 완전히 작동한다.떻게 오오 ?생 생? ???

@Spring Boot Application은 다음 사항을 모두 추가하는 편리한 주석입니다.

  • @Configuration은 응용 프로그램콘텍스트의 bean 정의 소스로서 클래스에 태그를 붙입니다.
  • @EnableAutoConfiguration은 클래스 경로 설정, 기타 콩 및 다양한 속성 설정에 따라 콩 추가를 시작하도록 스프링 부트에게 지시합니다.
  • 보통 Spring MVC 앱용으로 @EnableWebMvc를 추가합니다만, SpringBoot에서는 클래스 패스에 spring-webmvc가 표시되었을 때 자동으로 추가됩니다.그러면 응용 프로그램이 웹 응용 프로그램으로 플래그가 지정되고 Dispatcher Servlet 설정 등의 주요 동작이 활성화됩니다.
  • @ComponentScan은 Spring에게 hello 패키지에서 다른 컴포넌트, 구성 및 서비스를 검색하도록 지시하여 컨트롤러를 찾을 수 있도록 합니다.

스프링 부츠 만능
봄 부츠는 봄이다: 봄이다.
실제로, Spring Boot에서는, 애플리케이션의 동작에 필요한 설정을 가능한 한 삭감할 수 있습니다.
@SpringBootApplicationSpring 탑재 어플리케이션으로 만들기 위해 도입된 주석이 좋은 예입니다.
또한 Spring Boot에서는 패키징 의존성과 스프링 구성을 위한 일부 시작 프로그램을 제안합니다.

의 경우, 당신이 한 바와 , 「」는 「」입니다.spring-boot-starter-web종속성으로서 Spring MVC 구성 및 Spring을 사용하는 웹 애플리케이션과 관련된 기타 사항이 설정됩니다.
문서에는 실제로 다음과 같이 기술되어 있습니다.

11.3.2 @Enable (활성화)자동 구성 주석

spring-boot-starter-web에 Tomcat 및 Spring MVC가 추가되었기 때문에 자동 설정에서는 웹 응용 프로그램을 개발하고 있는 것으로 간주하고 그에 따라 Spring을 설정합니다.

@SpringBootApplication 부팅 어플리케이션을 사용하고 있기 때문에 기본적으로 주석 기반 어플리케이션(mvc:notation-drived)을 활성화합니다.설정을 지정할 필요는 없습니다.@Spring Boot Application https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-using-springbootapplication-annotation.html에 대해 읽어보십시오.

언급URL : https://stackoverflow.com/questions/51008382/why-spring-boot-application-doesnt-require-enablewebmvc

반응형