Spring으로 개발을 하다 보면 DTO 또는 객체를 검증해야 하는 경우가 있습니다. 이를 별도의 검증 클래스로 만들어 사용할 수 있지만 간단한 검증의 경우에는 JSR 표준을 이용해 간결하게 처리할 수 있습니다. 이번에는 객체의 검증을 손쉽게 하는 방법에 대해 알아보고자 합니다. 1. @Valid와 @Validated[ @Valid를 이용한 유효성 검증 ]@Valid의 개념 및 사용법@Valid는 JSR-303 표준 스펙(자바 진영 스펙)으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션이다. JSR 표준의 빈 검증 기술의 특징은 객체의 필드에 달린 어노테이션으로 편리하게 검증을 한다는 것이다.Spring에서는 일종의 어댑터인 LocalValida..
Spring은 공통적으로 여러 작업을 처리함으로써 중복된 코드를 제거할 수 있도록 많은 기능들을 지원하고 있다. 이번에는 그 중에서 필터(Filter) vs 인터셉터(Interceptor)의 차이에 대해 알아보고자 한다. 또한 간략하게 인터셉터(Interceptor)와 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)에 대해서도 비교해보고자 한다. 1. 필터(Filter)[ 필터(Filter)란? ]필터(Filter)는 J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 프론트 컨트롤러..
1. @Transactional 어노테이션(선언적 트랜잭션) [ @Transactional 어노테이션 ] Spring에서는 클래스나 인터페이스 또는 메소드에 부여할 수 있는 @Transactional이라는 어노테이션을 제공하고 있다. 이 어노테이션이 붙으면 스프링은 해당 타깃을 포인트 컷의 대상으로 자동 등록하며 트랜잭션 관리 대상이 된다. 즉, 이 어노테이션을 통해 포인트 컷에 등록하고 트랜잭션 속성을 부여하는 것이다. 이렇듯 AOP를 이용해 코드 외부에서 트랜잭션의 기능을 부여해주고 속성을 지정할 수 있게 해주는 것을 선언적 트랜잭션(declarative transaction)이라고 한다. 반대로 TrnasactionTemplate이나 개별 데이터 기술의 트랜잭션 API를 이용해 직접 코드안에서 사용..
아래의 내용은 토비의 스프링의 2권 2장을 참고해서 작성하였습니다. 1. Spring 트랜잭션의 세부 설정(전파 속성, 격리수준, 읽기전용, 롤백/커밋 예외 등) [ 전파 속성(Propagation) ] Spring이 제공하는 선언적 트랜잭션(트랜잭션 어노테이션, @Transactional)의 장점 중 하나는 여러 트랜잭션 적용 범위를 묶어서 커다란 하나의 트랜잭션 경계를 만들 수 있다는 점이다. 우리는 Spring이 트랜잭션을 어떻게 진행시킬지 결정하도록 전파 속성을 전달해야 하는데, 이를 통해 새로운 트랜잭션을 시작할지 또는 기존의 트랜잭션에 참여할지 등을 결정하게 된다. Spring이 지원하는 전파 속성은 다음의 7가지가 있다. REQUIRED SUPPORTS MANDATORY REQUIRES_NE..
1. 빈을 찾기 위한 다양한 의존성 검색 방법, DL(Dependency LookUp) Spring으로 개발을 하다보면 의존성을 주입(DI, Dependency Injection) 받는 것 뿐만 아니라 의존성을 갖는 빈을 검색(DL, Dependency LookUp)해야 할 때가 있다. 예를 들어 프로토타입 스코프의 빈을 이용해야 하는 경우가 대표적이다. Spring에서는 빈을 검색하기 위한 다양한 방법들을 제공하는데, 크게 5가지가 있다. [ ApplicationContext를 이용한 방법 ] Spring에서는 빈 팩토리를 구현한 DI 컨테이너인 ApplicationContext를 관리하고 있다. 그래서 우리는 ApplicationContext를 통해서 필요로 하는 빈을 다음과 같이 검색할 수 있다. ..