나도 스프링 부트를 사용해보자! - 스프링 웹 개발 기초

min·2022년 2월 16일
0

출처
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한 강사님

정적 컨텐츠

welcome page와 같이 서버에서 뭐 하는 것 없이 서버에서 바로 파일을 내려주는 것
스프링 부트 정적 콘텐츠 기능
hello-static.html이라는 요청이 오면 컨트롤러에서 찾아보고 없으면 resources 하위의 static 폴더를 뒤져서 가져다 줌

MVC와 템플릿 엔진

가장 많이 하는 패턴
jsp, php와 같은 친구들을 템플릿 엔진이라고 이야기 함
서버에서 변형을 해서 내려주는 방식

controller
view
model

2022-02-17 00:26:07.794 ERROR 5196 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-6] Exception processing template "hello-template": Error resolving template [hello-template], template might not exist or might not be accessible by any of the configured Template Resolvers

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello-template], template might not exist or might not be accessible by any of the configured Template Resolvers
	at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.14.RELEASE.jar:3.0.14.RELEASE]

hello-template.html 파일을 생성 후에 controller 단에서 hello-mvc 주소 들어오는 것 확인 후 일로 넘기려고 했는데 계속!!! 위치를 못 찾아서 화가 났었는데 생각해보니.. html 위치를 template 하위가 아닌 resource 하위에 넣어 두니 생긴 일이었다. 잘 이해하고 만들자;;

API

json을 통해서 데이터를 전달해주는 방식
vue와 react를 사용 할 때도 API로 데이터를 내려줄 때도 API 방식을 사용한다고 이야기 함
서버끼리 통신 할 때

@ResponseBody: http의 body에 데이터를 직접 넣어주겠다는 의미

위에서 정적 컨텐츠, mvc에서와는 다르게 뷰 리졸버가 반응하는 것이 아니라 HttpMessageConverter가 동작한다.
리턴형이 String이면 StringHttpMessageConverter가 동작하고
리턴형이 객체라면 MappingJackson2HttpMessageConverter가 동작하여 Json 형태로 리턴한다.

Jackson이라는 라이브러리를 통해 json으로 변형해준다. 비슷한 라이브러리로는 구글에서 만든 Gson이 있음. 우선 스프링은 기본적으로 Jackson을 사용한다..

클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입을 비교해서 HttpMessageConverter가 스프링에 의해서 선택된다! 그냥 이건 그렇게 된다!라고 지금 이해하고 넘어가자..

이건 boot라기 보다는 그냥 기초인데 여튼 정리가 되기 시작한다........ (세뇌)

profile
발등에 불이 따뜻하다..

0개의 댓글