스프링 부트 기본

유정현·2023년 12월 13일

스프링부트

목록 보기
1/1

개요


스프링 부트는 의존성 관리를 자동적으로 해준다는 장점이 있다. 스프링의 경우 여러 라이브러리의 호환을 일일이 확인해야하며, 톰캣을 따로 설치해줘야하는 번거러움이 있는 반면 스프링 부트는 그럴 필요 없어서 좋다. 이런 내용을 확인할 수 있는 부분은 pom.xml이나 gradle을 스프링과 스프링 부트를 비교해보면 알 수 있다. 스프링 부트의 경우 버전명이 아니라 아마 .start. 라는 표현이 대신하고 있을 것이다.

https://start.spring.io 프로젝트 설정


https://start.spring.io 스프링 부트는 해당 페이지를 통해 프로젝트를 쉽게 만들 수 있다. 좌측 화면은 프로젝트의 기본 설정이다. 자바 버전은 몇으로 할건지 빌드 도구는 어떤 것을 사용할 건지 등등을 확인할 수 있다.

좌측은 버전을 제일 신경 쓰면 되는데 자바 버전과 스프링 부트 버전의 호환은 아래와 같다.

  • 스프링부트3.x : 자바 17 이상 권장
  • 스프링부트2.x : 자바 11 이상 권장

위 내용이 제일 중요하고, 빌드 도구는 Maven과 Gradle을 주로 쓰는데 간략한 차이점은 아래 링크에 정리되어 있다.
https://azure-attention-c2e.notion.site/Maven-vs-Gradle-bc4d4765c3ca4e9fa22585d3dadfec8e?pvs=4

요청 처리 과정 ( 정적 컨텐츠, 템플릿 엔진, ResponseBody )

정적 컨텐츠

  • 프로젝트 내부 resources 폴더를 기본 경로로 하는 파일을 서버에 직접 요청할 수 있다.
  • 해당 url에 해당하는 컨트롤러가 없을 때만 가능하다.
  • localhost:8080/hello.html 이런 방식으로 url 요청으 보내면
  • tomcat은 해당 controller가 있는지 확인하고, 없으면 정적 리소스를 찾아서 응답한다.

템플릿 엔진

  • ViewResolver가 작동한다.
  • controller의 반환 값이 ViewResolver가 해당 리소스를 찾는 경로가 된다.
  • 해당 경로의 리소스를 찾으면 템플릿 엔진에 맞게 변형하여 클라이언트에게 전송한다.

ResponseBody

  • ResponseBody란 http프로토콜 body 안에 데이터를 담아서 전송하는 것이다.
  • 그럼 당연히 이건 리소스를 보내는 것이 아니라 문자열 혹은 String으로 응답한다.
  • 이땐 ViewResolver가 아닌 HttpMessageConverter가 작동한다.
  • HttpMessageConverter는 컨트롤러의 반환값이 문자열이면 문자열을 반환하고, 객체라면 해당 객체 내부 변수의 이름-값 을 key-value로 만들어 JSON 객체로 반환한다.

회고

스프링을 배운지 이제 조금 있으면 1년이 다 되어간다. 그렇다보니 이런 내용들도 어느정도 다 아는 내용이라고 생각하고 있었다. 하지만 이렇게 또 직접 강의를 들으며 몇 번을 정리하다보니 이제야 좀 내 것이 되어 가는 느낌이 든다. 앞으로 꾸준한 복습만 하는 것을 목표로 촘촘하게 공부해 나가야겠다.

profile
코딩하는 감자입니다.

0개의 댓글