스프링 부트에서 즉시 웹 개발을 시작할 수 있는 이유 - AutoConfiguration
스프링 부트에서 즉시 웹 개발을 시작할 수 있는 이유 - AutoConfiguration
spring-boot-starter-web 의존성을 추가하여 스프링 부트 프로젝트를 만들기만 하면 즉시 웹 어플리케이션 개발이 가능하다.
@RestController
public class UserController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
아무런 설정 없이 컨트롤러를 만들어 GET /hello 요청에 대한 핸들러를 구현하여 메인 어플리케이션(@SpringBootApplication)을 실행하면 해당 요청을 처리하는 웹 어플리케이션이 동작한다.
스프링 부트의 기본 설정
이는 스프링 부트가 제공하는 기본 설정때문에 가능한 것이다.
META-INF/spring.factories
기본 설정은 spring-boot-autoconfigure 모듈의 META-INF/spring.factories에 정의되어 있다.
그 중에서도 웹 MVC에 대한 기본 설정은 WebMvcAutoConfiguration이다.
WebMvcAutoConfiguration
// Defined as a nested config to ensure WebMvcConfigurer is not read when not
// on the classpath
@Configuration(proxyBeanMethods = false)
@Import(EnableWebMvcConfiguration.class)
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer {
...
이 클래스의 내용을 살펴보면 기존에 스프링 부트를 사용하지 않는, 스프링 MVC 어플리케이션 개발 시 직접 설정해주어야 했던 것들이 스프링 부트의 컨벤션에 의해 미리 설정되어 있음을 알 수 있다.
WebMvcProperties
@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {
WebMvcProperties는 application.properties에서 사용하여 웹 MVC에 대해 커스터마이징할 수 있는 프로퍼티가 정의되어 있는 클래스이다.
@ConfigurationProperties의 prefix = "spring.mvc"는 application.properties에서 이름이 spring.mvc.*인 프로퍼티에 대해 바인딩한다는 의미이다.
웹 MVC 기능 확장
스프링 부트가 제공하는 MVC 기능을 모두 사용하면서 컨버터 추가, 인터셉터 추가와 같은 추가적인 설정을 하고자 할때는 WebMvcConfigurer를 구현하는 설정파일을 만든다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
}
이 클래스에서 추가하고자 하는 설정에 맞는 WebMvcConfigurer의 메소드를 구현하면 된다.
References
출처 : atoz-develop.tistory.com/entry/How-to-develop-web-app-with-spring-boot-right-away?category=869242
'Spring Framework > Spring boot #3' 카테고리의 다른 글
스프링 부트 2.0의 default DBCP, hikariCP가 그렇게 빠르다던데? (hikariCP 저만의 성능 테스트를 해봤습니다.) (0) | 2023.04.26 |
---|---|
@Valid 와 validation을 이용한 중복체크 및 유효성 검사 (0) | 2022.05.24 |
[Spring Boot] 문자인증 구현 coolSMS (0) | 2022.05.24 |
[스프링 부트/MVC] 정적 리소스(Static Resources) 기본 설정과 커스텀 방법 (0) | 2021.04.22 |
Spring Boot + MyBatis 설정 방법(HikariCP, H2) (0) | 2021.04.22 |
[Spring Boot/Spring Web MVC] ViewController를 이용해서 뷰 매핑하기 (0) | 2021.04.22 |
[Spring Boot] ApplicationRunner 등록 방법 정리 (0) | 2021.04.22 |
스프링 부트 테스트 - 내장 서버 랜덤 포트로 띄우기 (0) | 2021.04.22 |