이번에는 Spring에서 Client로 받은 요청을 객체로 바인딩하기 위해 사용하는 방법들에 대해서 알아보도록 하겠습니다. 1. RequestBody, ModelAttribute, RequestParam이란? [ @RequestParam ] @RequestParam은 1개의 HTTP 요청 파라미터를 받기 위해서 사용한다. @RequestParam은 필수 여부가 true이기 때문에 반드시 해당 파라미터가 전송되어야 하며, 파라미터가 전송되지 않으면 400 에러가 발생한다. 반드시 필요한 값이 아니라면 required를 false로 설정해주면 되고, defaultValue 옵션을 사용하면 기본값 역시 지정할 수 있다. [ @RequestBody란? ] @RequestBody는 클라이언트가 전송하는 Json(..
현대 웹서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 이번에는 토큰 기반의 인증 시스템에서 주로 사용하는 JWT(Json Web Token)에 대해 SpringBoot와 Spring Security 기반으로 직접 제작해보도록 하겠다. 1. Spring Security 처리 과정 Spring Security 아키텍쳐는 위와 같으며 각각의 처리 과정에 대해서 자세히 알아보도록 하자.(아래에서 설명하는 내용은 Json Web Token을 활용한 Spring Security의 구현 방식으로, Session과 Token 기반의 차이점에 대해서는 여기를 참고하시고, Form을 활용한 Session기반의 구현 방식이 궁금하시다면 여기를 참고해주세요!) [ 0. 사전 세팅 ] ..
오늘은 단일 쿼리로는 해결할 수 없는 로직을 처리할 때 필요한 개념인 트랜잭션에 대해 알아보고, Spring에서 어떻게 활용하는지 확인해보도록 하겠습니다. 1. Transaction(트랜잭션)이란? [ Transaction의 탄생 배경 ] 보다 복잡한 프로그램을 개발하다 보면 쿼리 한 줄로 해결할 수 없는 로직을 처리해야하는 경우가 많습니다. 여러 개의 쿼리가 처리되는 상황에서 문제가 생겨버린다면 시스템에 큰 결함을 남기게 됩니다. 예를 들어 쇼핑물 서비스를 구현한다고 하면 아래와 같은 로직은 한 줄로 처리하는 것이 불가능합니다. 먼저 쇼핑몰에서 상품을 구매할 때 회원의 잔여 금액이 충분한지 확인하고 잔여 금액이 상품 가격보다 높을 때 구매 로직으로 넘어가야 합니다. 그리고 상품의 재고가 있는지 확인 후..
Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차이점은 HTTP Response Body가 생성되는 방식입니다. 이번에는 2가지 어노테이션의 차이와 사용법에 대해 알아보도록 하겠습니다. 1. @Controller 이해하기[ Controller로 View 반환하기 ]전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Clien..
DB에서 데이터를 조회하기 위해서는 이전의 2가지 설정 단계를 하고 오셔야 가능합니다. 그러므로 이 페이지를 통해서 들어오신 분은 앞의 설정을 마무리하고 오시면 됩니다! 기본적으로는 어떤 패키지명을 사용하던지 상관이 없지만 dispatcher-servlet.xml에서 설정했던 고유의 명칭 방식은 따라야합니다. 저의 경우에는 com.s4c.stg로 시작하는 패키지를 만들겠다고 설정하였기 때문에 com.s4c.stg를 기반으로 db.ctr이라는 이름을 뒤에 더 붙여준 것입니다. 1. DAO 설정하기 DAO란 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트입니다. 저는 데이터베이스에 있는 사용자 데이터를 접근할 것이기에 com.s4c.stg.user.dao라는 패키지를 생성하고 그 안에 UserD..