728x90
728x90
Filter 란 Web Application 에서 관리되는 영역으로써 Spring Boot Framework 에서 클라이언트로부터 오는 요청(req) / 응답(res) 에 대해서 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청(req) / 응답(res) 의 정보를 변경하거나, Spring 에 의해서 데이터가 변환되기 전의 순수한 클라이언트의 요청(req) / 응답(res) 값을 확인할 수 있다. 유일하게, ServletRequest, ServletResponse 의 객체를 변환할 수 있다. 주로 Spring Framework 에서는 request / response 의 Logging 용도로 활용하거나, 인증과 관련된 Logic 들을 해당 Filter 에서 처리한다. 이를 선/후 처리 함으로써, Se..
통일된 Error Response 객체 Error Response 객체는 항상 동일한 Error Response를 가져야 한다. 그렇지 않으면 클라이언트에서 예외 처리를 항상 동일한 로직으로 처리하기 어렵다. Error Response 객체를 유연하게 처리하기 위해서 간혹 Map 형식으로 처리하는데 이는 좋지 않다고 생각한다. 우선 Map 이라는 친구는 런타입시에 정확한 형태를 갖추기 때문에 객체를 처리하는 개발자들도 정확히 무슨 키에 무슨 데이터가 있는지 확인하기 어렵다. @ExceptionHandler(MethodArgumentNotValidException.class) protected ResponseEntity handleMethodArgumentNotValidException(MethodArgu..
어노테이션 구성과 동작 원리 커스텀 어노테이션은 메타 어노테이션을 사용하여 다음과 같은 구조를 가진다. 메타 어노테이션이란 커스텀 어노테이션을 구성할 때 시점, 위치 등을 지정하기 위한 어노테이션이다. 어노테이션의 필드 타입은 enum, String 이나 기본 자료형, 기본 자료형의 배열만 사용할 수 있다. @Targer({ElementType.$적용대상}) @Retention(RetentionPolicy.$정보유지되는대상) public @interface $어노테이션명{ public 타입 elementName() $default값 .... } 메타 어노테이션의 종류는 다음과 같다. @Retention : 컴파일러가 어노테이션을 다루는 방법을 기술, 어느 시점까지 영향을 미치는지를 결정 Retention..
Validation Validation 이란 프로그래밍에 있어서 가장 필요한 부분이다. 특히 Java 에서는 null 값에 접근하려고 할 때 null pointer exception 이 발생 함으로, 이러한 부분을 방지 하기 위해서 미리 검증을 하는 과정을 Validation 이라고 한다. public void run(String account, String pw, int age) { if(account == null || pw == null) { return } if(age == 0) { return } // 정상적인 로직 } 검증해야 할 값이 많은 경우 코드의 길이가 길어진다. 구현에 따라서 달라질 수 있지만 Service Logic 과의 분리가 필요 하다. 흩어져 있는 경우 어디에서 검증을 하는지 ..
Spring Spring 1.0 버전은 2004년 3월 출시, 지난 20년 세월 동안 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리를 차지 스프링 프레임워크의 구성은 20여 가지로 구성, 이러한 모듈들은 스프링의 핵심기능(DI, AOP, 등) 을 제공해 주며, 필요한 모듈만 선택하여 사용 가능 현재 단일 아키텍쳐(모놀리스) 에서 마이크로서비스 아키텍쳐로 변환 중이다. 여러 가지 모듈이 있지만 그 중에서 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둔다. 스플리의 과제는 "테스트의 용이성", "느슨한 결합" 에 중점을 두고 개발됐다. 스프링이 다른 프레임워크와의 가장 큰 차이점이 IoC 를 통한 개발이다. AOP 를 사용하여 로깅, 트랜잭션 관리, 시큐리티에서..
HTTP(Hyper Text Transfer Protocol) 로 TCP 를 기반으로 한 REST 의 특징을 모두 구현하고 있는 Web 에서 데이터를 주고받는 프로토콜이며 하이퍼텍스트 전송용 프로토콜로 정의되어 있지만 실제로는 HTML, XML, JSON, Image, Voice, Video, Javascript, PDF 등 다양한 컴퓨에터서 다룰 수 있는 것은 모두 전송할 수 있다. HTTP 는 메시지를 주고(req) 받는(res) 형태의 통신 방법이다. HTTP 의 요청을 특정하는 메소드는 8가지가 있다. REST 를 구현하기 위해서는 기본적인 CRUD 는 알고 있어야 한다. HTTP Status Code 는 응답의 상태를 나타내는 코드이다. 이중 자주 사용되는 코드는 아래와 같다.