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-web 및 spring-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 기반 프로젝트이므로 그대로 가져오고 실행하기 쉬워야 합니다.