✔️ 정해진 시간에 일괄적으로 작업을 처리하는 것✔️ 대체로 대용량 데이터를 처리할 때 사용한다.✔️ 서비스를 운영하는 관점에서 주기적으로 작업을 처리하기 위해서는 배치 프로그램을 사용해야 한다.✔️ 필요한 데이터를 모아서 처리해야 할 때ex) 월별 거래 명세서 생성✔
Could not find org.thymeleaf.extras:thymeleaf-extras-springsecurity5dependency에 아래와 같이 버전을 같이 명시해주면 됨implementation 'org.thymeleaf.extras:thymeleaf-ex
Swagger란, 개발한 REST API를 편리하게 문서화 해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트이다.Spring Boot에서는 build.gradle에서 dependencies에 springfox-bo
이전 포스트에서 에러 발생 시 뷰 템플릿으로 오류 페이지를 보여주도록 처리를 해봤다면, 이번 포스트에선은 API 경우에 어떤식으로 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON 형태로 데이터를 반환해 줄지 알아본다.✔️ 예외 발생 시, API 형태로 내려주는 코
✔️ 해당 포스트에서는 스프링이 아닌 순수 서블릿 컨테이너가 어떻게 예외를 처리하는지 정리해본다.Exception(말그대로 예외 발생, RuntimeException 등..)response.sendError(Http 상태 코드, 오류 메시지)웹 애플리케이션에서 Exce
✔️ 로그인 및 쿠키 생성로그인 성공 후, 쿠키를 생성하고 HttpServletResponse에 쿠키를 담는다.✔️ 기본 홈 화면 및 로그인 한 사용자에 대한 로그인 홈 화면 처리home 접속 시, 해당 사용자의 로그인 쿠키과 사용자 정보가 있으면 쿠키를 통해 로그인
Bean Validation은 특정한 구현체가 아니라, Bean Validation 2.0(JSR-380)이라는 기술 표준이다.검증 어노테이션과 여러 인터페이스 모음이다.Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체가 Hibernate Val
이번 포스트에서는 각 유효성 검증에 사용되는 방법들을 정리해본다.HashMap을 사용하여 오류가 발생한 필드 명과 오류 메시지를 저장해서 model에 넘겨준다.✔️ 위 방법의 문제점뷰 템플릿에서 중복 처리가 많다.타입 오류 처리가 안된다. 숫자 필드의 경우 문자 타입을
이전 포스트에서 정리했던 HTTP MessageConverter가 어느 시점에 어디에서 실행되는 것인가?위 질문에 대한 답을 얻기 위해 RequestMappingHandlerAdapter 구조 및 동작 방식부터 알아본다.@Controller 기반의 컨트롤러는 매우 다양
MessageConverter는, HTTP 메시지 바디(Payload)를 직렬화된 형식에서 객체 형식으로 변환하거나, 그 반대로 역직렬화된 객체 형식에서 Json 포맷 형태로 직렬화하여 변환해주는 기능이다.HTTP 요청 : @RequestBody, @HttpEntity
이전 포스트에서 진행했던 HandlerMapping, HandlerAdapter 에서 이제는 @RequestMapping 을 사용해서 코드를 작성해본다.컨트롤러에 @RequestMapping 어노테이션을 사용하면 HandlerMapping은 RequestMappingH
핸들러에서 반환된 ModelAndView를 알맞는 View로 전달하기 위해 DispatcherServlet에서 View Resolver를 실행한다.View Resolver는 ModelAndView에 들어있는 View 이름(논리적 뷰 이름)을 가지고 해당되는 View 컴
HandlerMapping은 HTTP 요청 정보를 이용하여 이를 처리할 핸들러(컨트롤러)를 찾아주는 기능을 가진 DispatcherServlet의 전략이다.(숫자는 우선순위를 의미)0 = RequestMappingHandlerMapping → @RequestMappin
org.springframework.web.servlet.DispatcherServlet스프링 MVC는 프론트 컨트롤러 패턴으로 구현되어 있고, 스프링 MVC의 프론트 컨트롤러가 바로 DispatcherServlet 이다.DispatcherServlet이 스프링 MVC
프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해준다.공통 처리 기능으로 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.스프링 웹 MVC의 핵심도 FrontController로, Di
✔️ 서블릿과 JSP의 한계서블릿으로 개발할 때는 View 화면을 위한 HTML 코드를 자바 코드에 섞여있어서 지저분하고 복잡하다.JSP를 사용했을 때는 View 생성하는 HTML 부분이 서블릿 보다 깔끔하고 중간에 자바 코드가 필요한 부분만 적용할 수 있어 좀 더 편
스프링 부트에서 서블릿 환경을 구성해서 Servlet에 대한 동작 방식을 이해하기서블릿은 스프링 부트가 필요없이 구성 및 실행이 가능하지만, 실행하기 위해서는 톰캣 같은 WAS를 설치하고 그위에 서블릿 코드를 클래스 파일로 빌드해서 올리고 톰캣 서버를 실행하는 복잡하고
빈 스코프란, 스프링 빈이 존재할 수 있는 범위를 뜻한다.싱글톤(Singleton) : 기본 Scope, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프프로토타입(Prototype) : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관
스프링 빈은 일반적으로 생성자 주입이 아닌 경우에는, 객체가 먼저 생성되고 그 이후에 의존관계가 주입된다. 객체 생성 -> 의존관계 주입따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다.스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메
build.gradle에 라이브러리 및 환경 추가File > Settings (윈도우 기준) > plugin > lombox 검색 및 설치 실행 (IntelliJ 재시작)Preferences > Annotation Processors 검색 > Enable anntati