Spring7 [ Spring ] Enum Type 검증 🌱 [ 문제 상황 ] 회원가입을 할 때, 성별(Gender)을 입력 해야 합니다.성별의 타입은 Enum 타입 입니다. ( "FEMALE", "MALE" )성별에 바인딩 되지 않는 값( "test")은 Json parse 실패 합니다.잘못된 성별을 입력 했을때 성별을 잘못 입력 했다고 알려줄 수 없을까요?🌱 [ 해결 방안 ] 잘못된 Json 값을 null로 바인딩 하자.검증을 도입 하여 null 혹은 잘못된 값일 경우, 예외 메시지를 전달 하자.🌱 [ 잘못된 값은 null로 바인딩 하자 ]잘못된 값이 생겼을 경우 바인딩에 실패 하며 Json parse 실패 문구를 보게 됩니다.잘못된 값은 null로 바인딩 해보겠습니다. 📝 [ @JsonCreator ] Json 데이터를 String to Enum .. 2025. 2. 25. [Spring] @ExceptionHandler API 에러 핸들링 🎉@ExceptionHandler 예외 상황이 발생 했을 때 예외를 처리 하고 Json 오류 안내를 해주거나 오류페이지로 이동 할수 있게 해주는ExceptionResolver의 한 종류 입니다. 📝 간단한 API컨트롤러는 Json 타입으로 상품 이름과 가격을 입력 받습니다.@RequestBody는 받은 Json을 한번에 orderDto에 매핑을 시도 합니다.이때 int 값인 price에 String 값을 받게 되면 어떻게 될까요? 정상 값정상적인 경우 받은 이름과 가격을 그대로 Json으로 반환 합니다. 실패 값실패한 경우 Json으로 결과 값을 받게 됩니다. 오류 처리 흐름1. 컨트롤러에서 예외가 발생 합니다.2. ExceptionResolver 우선순위에 따라 처리 할수 있는 resolver를 .. 2024. 9. 6. [Spring] 필터, 인터셉터 (Interceptor) 💡 문제 상황로그인을 한 유저 A는 모든 요청을 허용 하지만비 로그인 유저는 아이템 등록 폼으로 가는 것을 막고 싶습니다.이럴땐 필요한 것이 필터 입니다. 💡 필터요청 흐름WAS( 톰캣 ) > 필터 > 서블릿( DispatcherServlet ) > 컨트롤러 비로그인 한 유저는 필터에서 검증을 해서 막게 되면 서블릿, 컨트롤러 호출을 막을 수 있습니다. 필터 메서드init() : 필터의 시작을 나타내는 메서드destory() : 필터의 끝을 나타내는 메서드⭐️doFilter( ) : 필터의 주요 메서드로 실제 검증 기능을 합니다. dofilter 에서 비 로그인 사용자가 허가 되지 않은 url로 들어 왔다면 login 입력 폼으로 되돌리고로그인에 성공 한다면 자신이 들어온 입력폼으로 redirect.. 2024. 9. 5. [Spring] 쿠키, 세션 (Cookie, Session) 💡 로그인 서비스를 구현할때 로그인은 필수 기능 입니다.하지만 Http = 무상태 ( Stateless ) 이기 때문에 다시 접속할때 유저 정보를 주지 않으면서버는 어떤 유저가 접속 한 것 인지 알 수 없습니다. 그렇다면 로그인 유저의 정보를 서버는 저장을 해야하는데 어떻게 해야 할까요?파라미터 값으로 유저의 정보를 계속 줄 순 있지만 이 방식은 비효율적 입니다.그레서 등장한 것이 쿠키 입니다. 💡 쿠키 유저가 로그인을 할 경우 응답값에 쿠키를 넣어 줍니다.다음 응답시 마다 유저는 쿠키를 보여 주며 자신이 등록된 유저임을 증명 하게 됩니다. ⭐️ 쿠키 종류 세션 쿠키 : 쿠키의 만료 시각을 명시 하지 않으면 쿠키는 세션이 끝날때 삭제 됩니다.지속 쿠키 : expries 속성에 날짜를 지정하거나, .. 2024. 9. 4. [Spring] 빈 검증 ( Bean Validation ) 💡 빈 검증 ( Bean Vaildation ) Validator를 등록하여 검증 하는 방식은 따로 클래스를 만들고 등록 하는 과정이 필요합니다.이 과정을 없애기 위해 스프링부트는 글로벌 Validator를 등록 합니다.그러므로 따로 Validator를 등록 할 필요가 없습니다. 또한 코드를 통해 검증 하는 방식을 빈 어노테이션을 통해 검증 하여 검증 코드를 작성 하지 않고,빈 어노에티션을 통해 검증 할 수 있습니다. 🙄 빈 검증 기능을 어떻게 사용하나요? 검증 하고자 하는 객체에 원하는 검증 어노테이션을 붙이고,컨트롤러에서 검증 객체 앞에 @Valid or @Validated 어노테이션을 붙이면 됩니다.그러면 해당 객체의 어노테이션을 통해 검증을 하게 됩니다. 빈 검증 단계는 다음과 같습니다.1.. 2024. 9. 3. [Spring] 메시지, 검증 (Validation) 💡 메시지 화면에 상품명 : "상품명" 으로 나타내는 뷰가 있습니다.만약, 기획자가 상품명을 "상품 이름" 으로 바꿔 달라고 한다면 어떻게 해야 할까요?또한, 이 상품명이 10개 페이지에서 사용 된다면 개발자는 하드코딩 된 상품명을 모두 일일이 고쳐야 합니다. 이럴때 필요한 기능이 한번에 값을 고칠수 있는 메시지 입니다. 🙄 메시지 기능 어떻게 사용하나요? 간단히 스프링에 MessageSource를 빈으로 등록 하면 됩니다. 하지만 스프링 부트는 MessageSource를 자동으로 등록 해주기 때문에 빈 등록을 안해도 사용 가능 합니다. 메시지 경로는 resources 이며,기본 basename = messages로 설정 됩니다. 추가 등록은 application.properties 에서 .. 2024. 9. 2. 이전 1 2 다음