본문 바로가기

Spring14

[Spring] 필터(Filter)와 인터셉터(Interceptor) 0. 이 글을 쓰게 된 이유 스프링은 개발자가 비즈니스 코드에 더 집중할 수 있게 여러 기능들을 숨기고있다. 대표적으로 AOP, Filter, Interceptor라는 기술을 사용한다. AOP는 스프링의 대표 기술로써 프록시를 이용해 코드를 숨겨주는 기능을 한다는 것은 대부분 알고 있을 것이다. 그렇다면 Filter와 Interceptor는 무엇일까? 그 차이와 용도에 대해서 알아보자. 1. Filter 필터는 스프링의 기술이 아닌 JavaEE 표준 스펙 기능으로써 톰캣과 같은 WAS가 가지고있는 기술이다. JavaEE 필터 공식문서를 보면 필터는 요청이나 응답 또는 둘 다에 대해 필터링을 수행하는 객체라고 소개한다. 즉, Web Context 단에서 Spring으로 요청을 보내기 전과 응답이 온 후로 .. 2023. 4. 19.
[Architecture] Service Layer의 역할 0. 이 글을 쓰게된 이유 지금까지 계층형 아키텍처를 사용하면서 자연스럽게 service 계층을 사용했다. 하지만 service 계층의 담당하는 역할이 뭔지, 굳이 있어야하는지, 다른 도메인 로직과 무슨 차이로 나눠지는지 생각해본적이 없었다. 다른 사람들의 생각을 알아보고, 나의 생각을 적립하기 위해 이 글을 쓰게되었다. 1. Service Layer? 마틴 파울러는 Service Layer의 역할을 다음과 같이 정의한다. A Service Layer defines an application's boundary [Cockburn PloP] and its set of available operations from the perspective of interfacing client layers. It.. 2023. 4. 18.
[Spring] @(Rest)ControllerAdvice 활용 0. 이 글을 쓰게된 이유 미션을 진행하며 (Rest)ControllerAdvice를 사용하여 예외를 처리하였다. 원래 (Rest)ControllerAdvice가 예외를 처리할 때에만 사용하는줄 알았는데 활용할 수 있는 부분이 많은 기능이었다. 그 부분에 대해 알아보기 위해 이 글을 쓰게 되었다. 1. @(Rest)ControllerAdvice란? Spring 공식 문서에 따르면 @(Rest)ControllerAdvice가 붙은 빈은 모든 @Controller이 붙은 빈에서 사용하는 @ExceptionHandler, @InitBinder, @ModelAttribute(글 쓰기 쉽게 세가지 기능이라고 부르겠다.)가 붙은 메소드들을 한번에 처리할 수 있도록 해주는 기능이다. Controller에서 @Exce.. 2023. 4. 13.
[후기] 토비의 스프링 3.1 Vol.1 후기 0. 이 글을 쓰게 된 이유 토비의 스프링 vol.1의 정독을 완료하였다. 사실 3달 전에 완독을 했지만 부족한 부분을 다시 읽고, 후기를 미루고 미루다가 지금 쓰게 되었다. 개인적으로 스프링과 객체 지향을 이해함에 있어 큰 도움이 되었기 때문에 이 글을 쓰고 싶었다. 1. 스프링을 사용하는 이유 백엔드 웹개발에서 스프링은 가장 많이 쓰는 프레임 워크 중 하나이다. 우리나라에서는 대부분의 기업에서 스프링을 사용하고, 전자 정부 표준 프레임 워크이다. 사실 내가 스프링을 공부하게 된 것도 이러한 이유에서이다. 하지만 이것만으로는 충분하지 않다. 물론 많은 개발자들이 사용하니 그만큼 자료도 많은 장점이 있긴 하지만 그게 스프링을 사용하는 직접적인 이유가 될 수 없다. 토비의 스프링을 읽으며 내가 이해한 스프.. 2022. 12. 5.
[Spring] @Valid, @Validated 동작 원리 0. 이 글을 쓰게 된 이유 개발을 할 때, 데이터의 유효성 검증은 굉장히 중요하고 애플리케이션 전체에서 발생한다. 클라이언트에서 넘어온 데이터가 유효한지, 서비스 레이어에서 파라미터 값이 제대로 된 값인지 등 여러 곳에서 데이터 검증은 필수다. 하지만 유효성 검증에는 이런 특징이 있는 만큼 문제점이 존재한다. 문제점 애플리케이션 전체에 분산되어 있다. 코드 중복이 심하다. 비즈니스 로직에 섞여있어 복잡하다. 이러한 문제점들 때문에 유효성 검증은 유지/보수가 어렵다. 해결책 Java에서도 이러한 문제를 알고 Bean Validation이라는 유효성 검증 프레임워크를 제공하고 있다(JSR-303 표준 스펙). Bean Validation 프레임 워크는 위에서 말한 문제들을 해결하기 위해 다양한 제약을 모델.. 2022. 10. 20.
[디자인 패턴] 템플릿/콜백(Template/Callback) 패턴 0. 이 글을 쓰게 된 이유 토비의 스프링을 공부하면서 템플릿/콜백 패턴에 대해서 접하게 되었다. 스프링에서 제공하는 코드를 보니 굉장히 많이 활용되고 있었고 활용하기 좋은 패턴이어서 정리하게 되었다. 참고로 이 패턴은 GoF의 디자인 패턴에서는 나오지 않는 패턴이다. 1. 템플릿/콜백 패턴이란? 템플릿/콜백 패턴은 전략 패턴의 일종이다. 전략 패턴의 기본적인 구조에 변화되는 부분을 매번 클래스로 만들지 않고, 익명 내부 클래스를 이용해 바로 생성하여 이용하는 식이다. 1.1 용어 정리 템플릿 템플릿은 어떤 목적을 위해 미리 만들어둔 모양이 있는 틀이다. 프로그래밍에서는 고저오딘 틀 안에 바꿀 수 있는 부분을 넣어서 사용하는 경우에 템플릿이라고 부른다. JSP는 HTML이라는 고정된 틀에 EL과 스크립릿.. 2022. 9. 30.