Spring Boot의 설정
Spring Boot 프로젝트를 사용해서 설정파일을 지정하기 위해서는 Java 클래스를 사용할 수 도 있지만, application.yml 또는 application.properties 를 많이 사용합니다. 특히 YAML이 설정 및 관리가 더 편리하기에 _application.yml_을 많이 사용합니다.
application.properties 는 설정이름=값
형식을 사용하고, application.yml은 설정이름:값
형식을 사용합니다. 두 가지는 구분자가 = 와 : 로 다릅니다. 아래는 properties와 yml의 차이 예시입니다.
// properties
logging.level.org.springframework = debug
// yml
logging:
level:
org.springframework: DEBUG
위와 같은 로깅 정보를 등록하고 실행시키면 아래와 같은 메시지를 확인할 수 있습니다.
...
DataSourceTransactionManagerAutoConfiguration.JdbcTransactionManagerConfiguration#transactionManager:
Did not match:
- @ConditionalOnMissingBean (types: org.springframework.transaction.TransactionManager; SearchStrategy: all) found beans of type 'org.springframework.transaction.TransactionManager' transactionManager (OnBeanCondition)
DevToolsR2dbcAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'io.r2dbc.spi.ConnectionFactory' (OnClassCondition)
DispatcherServletAutoConfiguration.DispatcherServletConfiguration#multipartResolver:
Did not match:
- @ConditionalOnBean (types: org.springframework.web.multipart.MultipartResolver; SearchStrategy: all) did not find any beans of type org.springframework.web.multipart.MultipartResolver (OnBeanCondition)
EhCacheCacheConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'net.sf.ehcache.Cache' (OnClassCondition)
...
위 내용 중 DispatcherServletAutoConfiguration을 확인할 수 있습니다. Dispatcher Servlet은 사용자 요청을 처리해주는 게이트웨이라고 정리하면 좋습니다.
Dispatcher Servlet (?)
Dispatcher Servlet에서 Dispatch는 사전적 의미로 '보내다' 라는 의미를 사지고 있습니다. 클라이언트의 모든 요청을 한 곳으로 받아서 처리하는 역할을 수행합니다. 즉, 서버 가장 앞단에서 사용자의 요청을 가장 먼저 받아 요청에 알맞는 Hendler, 즉 Controller에서 위임해주는 역할을 수행합니다.
Handler의 실행 결과는 HTTP Response 형태로 만들어서 다시 반환을 합니다. 사용자의 요청은 Dispatcher Servlet에서 시작해서 Dispatcher Servlet에서 끝납니다.
- 사용자의 요청이 Dispatcher Servlet으로 전달된다.
- Handler Mapping 또는
- Controller 에 전달을 한다.
- 처리된 결과 값을 Model 형태로 Dispatcher에 반환하고,
- 사용자에게 보여주고자 하는 View 형태로 ViewResolver가 Page를 생성을 하고,
- 이러한 Page 값에 Model을 포함시켜서 전달을 하게 된다.
RestController
Spring MVC Application에서는 컨트롤러를 생성하기 위해 일반적으로 클래스를 스프링 설정파일에 등록해서 사용하였습니다. Spring 4.x 버전부터는 xml 파일에 설정정보를 등록하지 않고, Annotation을 이용하여 등록할 수 있도록 지원을 하고 있습니다.
RestController는 Spring 4.x 부터 지원을합니다. Spring Web에서는 사용자에게 보여지는 View가 없는 컨트롤러를 RestController라고 합니다. 즉 View, Page 형태가 아닌, JSon, XML 형태로 반환을 하게 됩니다.(View가 없는 Rest Data 형태)
클라이언트의 요청이 DispatcherServlet으로 전달이 되고, DispatcherServlet은 HandlerMapping과 REST controller에 요청을 전달하고, HandlerMapping에서 사용자에게 바로 응답을 전달합니다. REST Controller는 @Controller와 @ResponseBody의 기능을 모두 가지고 있다고 생각하시면 됩니다.
출처
https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
'Linux > Server' 카테고리의 다른 글
[Spring] REST API Version 관리 (1) | 2022.03.23 |
---|---|
[Spring] Path variable ? (0) | 2022.03.17 |
Web Service / Web Application (0) | 2022.03.15 |
Ubuntu 14.04 에서 Samba Server 설정 (0) | 2015.09.01 |
VMware 에 CentOS 7 Server 설치하여 사용하기 (3) | 2014.09.24 |