이번에는 Spring Boot의 동작원리에 대해 알아보려고 한다. (어떠한 설정파일이 사용되고 로딩되는지에 대해)
스프링 부트를 사용해서 설정파일을 지정하려면 Java 파일을 사용할 수 있지만
application.properties
application.yml 파일로 설정할 수 있다.
두개는 동일한 역할을 하니 확장자에 따라서 구분하면 될 것 같다.
Java에서는 설정항목을 지정하기 위해서 properties파일을 사용해 왔고 "설정이름=값"이라는 방식으로 지정하고
yml파일에서는 XML이나 JSON 포맷과 같이 데이터를 저장하기 위한 한 형태로 "설정이름:값"방식으로 지정한다.
yml파일을 사용하게 되면 모든 데이터를 List, Hash, 스칼라 데이터로 적절하게 표현할 수 있고, 상대적으로 가독성도 좋고 많은 데이터 전송, 환경설정 파일 등에서 자주 사용되곤 한다.
yml파일을 이용해서 스프링 부트 설정을 하게되면 보다 직관적이라는 장점이 존재한다.
[ 로그 관련 설정 추가 ]
로깅 레벨을 org.springframework라는 패키지에 DEBUG로 지정해준다는 설정이다.
설정 후 실행을 시켜보면 DEBUG 단계로 로그가 찍히는 것을 확인해볼 수 있다.
AutoConfiguration > Dispatcher Servlet
사용자 요청에 따른 비즈니스 로직을 처리한 다음 결과값을 API를 호출한 쪽으로 보내줘야 하는데, Dispatcher Servlet은 일종의 GateWay라고 생각하면 좋을 것 같다.
AutoConfiguration > HttpMessageConvertersAutoConfiguration
사용자의 요청을 처리한 후 결과값을 반환시켜주기 위해서 사용되는 파일은 HttpMessageConvertersAutoConfiguration이다. 기본적으로 JSON 포맷으로 데이터를 변환시킨 후 클라이언트에게 반환시킨다.
[ DispatcherServlet ]
dispatch : 보내다/ 파견, 발송
Java Web Programming, Spring MVC, Spring Boot 에서는 Servlet 은 Servlet Controller에서 Http 프로토콜로 들어오는 모든 요청값을 처리하기 위해 프레젠테이션 계층의 제일 앞에 놓여져 중앙집중식의 요청 처리를 위한 FrontController역할을 담당한다. = 일종의 게이트웨이 GW 역할
모든 사용자의 요청정보가 Dispatcher Servlet에 전송이 되고 Handler Mapping / Controller로 전달 하게 된다.
처리된 결과값을 Spring MVC 에서는 Model형태로 반환을 시켜주며, 사용자에게 보여주고자 하는 ViewResolver를 통해 전달하기도 한다.
Spring MVC 에서는 Controller를 생성하기 위해서 일반적인 컨트롤러 클래스를 등록해서 사용해왔지만, 4.x부터는 어노테이션 @을 이용하여 사용한다.
Spring Boot에서는 별도의 XML을 설정하지않고 컴포넌트들을 등록해서 사용하면 된다.
사용자에게 보여주는 형태가 아니라 XML/JSON 파일과 같은 데이터포맷으로 전달하는 어플리케이션을 개발하는 것이다.
Spring MVC의 View형태의 페이지를 생성할 필요가 없다.
Spring Web에서는 사용자에게 보여주는 페이지를 가지지 않는 컨트롤러를 REST Controller라고 하며, 전달하고자 하는 메시지가 있을 경우 값을 반환데이터를 즉, ResponseBody 에 포함하지 않은 채로 전달 할 수 있다.
일반적은 Controller는 클라이언트에게 반환시키고자하는 데이터를 ResponseBody로 변형하여 반환을 해줬어야 한다.
'프로그래밍 > SPRING BOOT' 카테고리의 다른 글
[인프런 : spring-boot] User 도메인 클래스 생성 / GET HTTP Method (0) | 2022.08.30 |
---|---|
[인프런 : spring-boot] Path Variable 사용 (0) | 2022.08.30 |
[인프런 : spring-boot] HelloWorld Bean 추가 (0) | 2022.08.29 |
[인프런 : spring-boot] HelloWorld Controller 추가 (1) | 2022.08.29 |
[인프런 : spring-boot] spring boot 구조 확인 / 실행 방법 (1) | 2022.08.29 |