Clean Code - 1장(깨끗한 코드)
·
Book
Clean Code✨ 1장을 읽으며 간략하게 정리한 포스트입니다. 장인 정신 = 원칙, 패턴, 기술을 기반으로 한 이론적인 지식의 습득 + 직접 경험해 연습하는 체득 나쁜 코드 미약한 전제에 기반해 발생한다. 시간을 핑계로 나쁜 코드를 양산하지 말자. 오히려 나중에 시간이 더 필요해질 수 있다. 클린 코드의 특성 우아하다(보기에 좋다) 가독성이 뛰어나다 다른 사람이 고치기 좋다 주의 깊게 작성된다 테스트 코드의 통과 중복이 없다 모든 설계 아이디어를 포함 클래스, 메서드, 함수를 줄인다. 읽기 쉽다 (bec. 기존 코드를 계속 참고하기 때문) 시간이 지날수록 코드의 품질이 좋아진다
Spring - Exception
·
Spring
Spring은 서블릿 위에서 작동한다. Servlet 단계에서의 예외부터 이해해보자! 서블릿의 예외 처리 방법 두 종류 1️⃣ Exception 2️⃣ response.sendError(HTTP Status Code, Error Message) Exception 자바가 직접 실행 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료 웹 어플리케이션 사용자 요청별로 쓰레드 할당되며 서블릿 컨테이너 안에서 실행된다. try-catch로 예외를 잡아서 처리하면 문제가 없지만 서블릿 밖으로 나가게 되면 500으로 처리된다 response.sendError(HTTP 상태 코드, 오류 메시지) 서블릿 컨테이너에게 오류 메시지를 직접 전달 가능 WAS👈필터 👈 서블릿 👈인터셉터 👈 컨..
MVC2 - Filter, Interceptor
·
Spring
쇼핑몰을 예를 들어 보자면, 주문 현황 페이지는 게스트가 아닌 회원만이 접속할 수 있어야 한다. 만약 게스트가 주문 현황 페이지에 접근하게 되면 타 페이지로 리다이렉트되야 할 것이다 하지만 위와 같이 회원만이 접근할 수 있는 페이지가 여러 개일 경우 일일이 컨트롤러에서 로그인 여부를 체크해서 리다이렉션해주어야 할까?😅 모든 컨트롤러에서 매번 권한을 체크하고 리다이렉션해주어야 한다면 👎실수가 발생할 확률이 높아질 것이고, 👎로직이 변경/추가될 때 일일이 변경해줘야 하는 수고가 생긴다. 이처럼 여러 곳에 걸쳐서 공통의 관심사가 적용되는 경우를 '공통 관심사(Cross-cutting Concern)'라고 한다. 위 쇼핑몰과 같은 예시는 인증에 대한 공통 관심사가 존재한다고 말할 수 있겠다. 공통... 관심사?..
MVC2 - 로그인(쿠키, 세션)
·
Spring
도메인이란? 화면, UI, 기술 인프라 등등의 영역을 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역 웹은 도메인에 의존하지만, 도메인은 웹에 유지하지 않는다. 쿠키의 사용 배경 HTTP 는 Stateless Protocol 그러므로 현재 로그인에 성공 시 회원임을 검증할 수 있는 쿠키를 만들어 웹 브라우저에 전달해 주어야 한다. 모든 요청에 쿠키를 포함하여 로그인이 된 상태인지 확인하자! 쿠키의 종류 세션 쿠키 : 브라우저 종료시까지만 유지(만료 날짜 생략 시) 영속 쿠키 : 만료 날짜까지 쿠키 유지 쿠키로 로그인/로그아웃 구현 쿠키 만들기(로그인) 🍪 로그인에 성공할 시에 쿠키를 만들어 주면 되겠다! @PostMapping("/login") public String login(@Validate..
MVC2 - Bean Validation
·
Spring
Bean Validation 정의 검증 애노테이션과 여러 인터페이스의 모음 - 인터페이스만 제공하고 구현체를 갈아끼울 수 있음 주로 Hibernate 이용 Hibernate : 객체 관계 매핑 프레임워크 애노테이션만 붙이면 될까? NO! 👉 Validator를 필요로 함 Bean Validation 사전준비 build.gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' jarcarta.validation.api 설치 확인가능 -> hibernate.validator가 실제 구현체로 동작 javax.validation (ex:@NotNull, @NotBlank) : 특정 구현에 상관없이 제공하는 표준 인..
MVC2 - Validation
·
Spring
상품 등록시의 검증 Validation Flow 정상 로직 PRG : POST - Redirect - GET 비정상 로직 예) 상품명을 입력하지 않거나, 숫자 필드에 문자가 들어오는 경우 컨트롤러에서 검증이 실패하면 검증에 실패한 정보를 담아서 등록 폼을 다시 렌더링한다. 컨트롤러에서 모델에 잘못된 데이터까지 다시 담아서 등록 폼에 다시 전달해야 한다. 어떤 값이 잘못되어 있는지 다시 알려 주어야 한다. StringUtils : 문자열 관련 기능을 강화한 클래스 Validation 방법 타입 오류 처리하기 타입 오류는 컨트롤러 접근 전에 500 - BAD REQUEST로 발생한다. 타입 오류가 발생해도 오류가 폼에 남아야 하지만 바인딩이 처리되지 못함 BindingResult 검증 오류를 보관하는 객체...