1. 개요

예제은 Spring으로 웹 애플리케이션을 생성하는 방법을 보여줍니다.

애플리케이션 구축을 위한 Spring Boot 솔루션을 살펴보고 비 Spring Boot 접근 방식도 살펴보겠습니다.

우리는 주로 Java 구성을 사용하지만 동등한 XML 구성도 살펴봅니다.

2. Spring Boot를 사용하여 설정

2.1. 메이븐 의존성

먼저 spring-boot-starter-web  의존성이 필요합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.7.2</version>
</dependency>

이 스타터에는 다음이 포함됩니다.

  • Spring 웹 애플리케이션에 필요한 spring-webspring-webmvc 모듈
  • 서버를 명시적으로 설치하지 않고 웹 애플리케이션을 직접 실행할 수 있는 Tomcat 스타터

2.2. 스프링 부트 애플리케이션 생성

Spring Boot 사용을 시작하는 가장 간단한 방법은 기본 클래스를 만들고  @SpringBootApplication 으로 어노테이션을 추가하는 것입니다 .

@SpringBootApplication
public class SpringBootRestApplication {

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

이 단일 어노테이션은 @Configuration , @EnableAutoConfiguration@ComponentScan을 사용하는 것과 동일합니다.

기본적으로 동일한 패키지 이하의 모든 구성 요소를 검사합니다.

다음으로 Spring 빈의 Java 기반 구성을 위해 구성 클래스를 만들고 @Configuration 어노테이션 으로 어노테이션을 추가해야 합니다 .

@Configuration
public class WebConfig {

}

이 어노테이션은 Java 기반 Spring 구성에서 사용하는 주요 아티팩트입니다. 그 자체로 @Component 로 메타 어노테이션이 추가되어 어노테이션이 달린 클래스를 표준 빈으로 만들고 컴포넌트 스캔의 후보이기도 합니다.

@Configuration 클래스 의 주요 목적은 Spring IoC 컨테이너에 대한 빈 정의의 소스가 되는 것입니다. 자세한 설명은 공식 문서 를 참조하십시오 .

핵심 spring-webmvc 라이브러리 를 사용하는 솔루션도 살펴보겠습니다 .

3. spring-webmvc를 사용하여 설정

3.1. 메이븐 의존성

먼저 spring-webmvc  의존성이 필요합니다.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.3</version>
</dependency>

3.2. Java 기반 웹 구성

다음으로 @Configuration 어노테이션 이 있는 구성 클래스를 추가합니다 .

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

여기에서는 Spring Boot 솔루션과 달리  기본 Spring MVC 구성을 설정하기 위해  @EnableWebMvc 를 명시적으로 정의하고  구성 요소를 스캔할 패키지를 지정하기 위해 @ComponentScan 을 정의해야 합니다.

@EnableWebMvc 어노테이션은 디스패처 서블릿 설정, @Controller@RequestMapping   어노테이션 활성화, 기타 기본값 설정  과 같은 Spring Web MVC 구성을 제공합니다 .

@ComponentScan 은 검사할 패키지를 지정하여 구성 요소 검사 지시문을 구성합니다.

3.3. 이니셜라이저 클래스

다음으로 WebApplicationInitializer 인터페이스 를 구현하는 클래스를 추가  해야 합니다.

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.scan("com.baeldung");
        container.addListener(new ContextLoaderListener(context));

        ServletRegistration.Dynamic dispatcher = 
          container.addServlet("mvc", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");   
    }
}

여기에서 우리는  AnnotationConfigWebApplicationContext 클래스를 사용하여 Spring 컨텍스트를 만들고 있습니다. 즉, 어노테이션 기반 구성만 사용한다는 의미입니다. 그런 다음 구성 요소 및 구성 클래스를 검색할 패키지를 지정합니다.

마지막으로 웹 애플리케이션의 진입점인 DispatcherServlet을 정의합니다.

이 클래스는 <3.0 서블릿 버전 의 web.xml 파일을 완전히 대체할 수 있습니다 .

4. XML 구성

동등한 XML 웹 구성도 간단히 살펴보겠습니다.

<context:component-scan base-package="com.baeldung.controller" />
<mvc:annotation-driven />

이 XML 파일을 위의 WebConfig 클래스로 바꿀 수 있습니다.

애플리케이션을 시작하기 위해 XML 구성 또는 web.xml 파일을 로드하는 Initializer 클래스를 사용할 수 있습니다. 이 두 가지 접근 방식에 대한 자세한 내용은 이전 기사 를 확인하십시오 .

5. 결론

이 기사에서는 Spring 웹 애플리케이션을 부트스트래핑하기 위한 두 가지 인기 있는 솔루션을 살펴보았습니다. 하나는 Spring Boot 웹 스타터를 사용하고 다른 하나는 핵심 spring-webmvc 라이브러리를 사용합니다.

REST with Spring에 대한 다음 기사에서는 프로젝트 에서 MVC 설정, HTTP 상태 코드 구성, 페이로드 마샬링 및 콘텐츠 협상을 다룹니다.

항상 그렇듯이 이 기사에 제시된 코드는 Github에서 사용할 수 있습니다 . 이것은 Maven 기반 프로젝트이므로 그대로 가져오고 실행하기 쉬워야 합니다.

REST footer banner