스프링 부트에서 서비스를 우아하게 종료하기(Graceful Shutdown)
·
Spring Boot
서비스를 운영하다 보면 배포, 장비 교체 등을 위해서 서비스를 내리고 다시 올려야 하는 경우가 생긴다.여기서 등장하는 Graceful Shutdown은 말 그대로 서비스를 우아하게 중지한다는 의미다. 서비스를 종료하기 전에 진행 중이던 작업들은 완료하고, 리소스까지 정리한 후에 종료되는 로직을 의미한다. 즉, 종료 신호를 받으면 아래의 과정이 모두 이뤄진 후에 종료되어야 한다는 것이다.새로운 요청을 막기 위해 connection을 모두 닫기애플리케이션이 진행 중인 작업을 모두 완료파일은 마저 저장작업 중이던 DB는 커밋 or 롤백 처리사용자 요청에 응답은 끝까지 주기... 이러한 Graceful Shutdown은 애플리케이션 단에서는 물론이고, 서비스를 컨테이너로 감싸고 있다면 이를 고려한 컨테이너 오케..
@Lombok 생성자 총정리!
·
Spring Boot
Lombok으로 Entity를 만들 때 사용하는 생성자 관련 어노테이션을 총정리해보자.크게 3가지가 있다.1. @NoArgsConstructor new User()와 같이 파라미터가 없는 기본 생성자를 생성한다.중요한 점은, JPA는 DB에서 데이터를 조회해서 데이터를 만들 때 이 기본 생성자를 반드시 필요로 한다는 것이다! 세부 옵션으로는 다음이 있다.access접근 제어자(public, protected 등)를 지정한다.@NoArgsConstructor(access = AccessLevel.PROTECTED)PUBLIC: 모든 곳에서 접근 가능하다.PACKAGE: 같은 패키지 내에서 접근 가능하다. Java의 default와 같다.MODULE: 같은 모듈 내에서 접근 가능하다. 모듈은 여러 패키지를 ..
스프링 부트로 웹 개발하는 방법 3가지
·
Spring Boot
1. 정적 콘텐츠파일을 그대로 웹 브라우저에 내려주는 방식이다.resources/static 폴더에 있는 정적 파일을 화면에 보여준다. 웹 브라우저에서 localhost:8080/hello-static.html으로 접근하면 내장 톰캣 서버가 요청을 받아 스프링에게 넘긴다.스프링은 hello-static 관련 컨트롤러를 우선 찾는다.없으므로 resources/static에서 hello-static.html을 찾아서 화면에 보여준다.2. MVC와 템플릿 엔진Model-View-Controller를 분리하여, View 단에서 템플릿 엔진이 HTML을 가공하여 화면을 보여주는 방식이다.서버에서 프로그래밍해서 HTML을 동적으로 가공해서 웹 브라우저에 내려주는 것을 템플릿 엔진이라고 한다.관심사 분리, 역할과 책..
스프링 부트에서 정적 View를 구현하는 방법
·
Spring Boot
스프링 부트는 static welcome page와 template welcome page를 둘 다 지원한다.우선 static(정적) 콘텐츠 위치에서 index.html 파일을 찾고, 없으면 index 템플릿을 찾는다.둘 중 하나가 발견되면 자동으로 애플리케이션의 시작 페이지로 사용된다.Staticresources/static/index.html 작성Template1. resuorces/template/hello.html 작성안녕하세요. 손님 2. controller 작성@Controllerpublic class HelloController { @GetMapping("hello") public String hello(Model model) { // key-value m..