개발을 하다 보면 서로 다른 환경을 운영해야 한다. 이번에는 이와 관련되어 Spring이 지원해주는 기술들에 대해 알아보도록 하자. 1. 활성 프로파일과 @Profile, @ActiveProfiles [ 환경의 분리 ] 개발을 하다 보면 여러 개의 환경을 관리해야 한다. 예를 들어 테스트 코드를 위한 테스트 환경, 개발을 하고 테스트를 하기 위한 알파 환경, 실제 운영 환경과 동일하게 맞춰두고 QA 등을 진행하는 스테이지 환경, 실제 서비스가 운영되는 운영 환경 등이 있다. 그렇기 때문에 각각의 환경들에 맞게 서로 다르게 빈 또는 프로퍼티들을 정의해야 할 수 있다. 예를 들어 개발을 위해서는 로컬 또는 내장 캐시를 이용할 수 있지만 실제 운영을 위해서는 외부 캐시를 이용하는 것이 대표적인 경우이다. Sp..
Spring을 이용해 개발을 하다 보면 빈팩토리 후처리기(BeanFactoryPostProcessor)의 구현체를 빈으로 등록해주어야 하는 경우가 있다. 해당 타입의 빈을 등록하기 위해서는 static 메소드로 선언해주어야 하는데, 이번에는 그 이유를 예시와 함께 알아보고자 한다. 1. BeanFactoryPostProcessor 타입의 빈 메소드를 static으로 해야 하는 이유 [ 빈팩토리 후처리기(BeanFactoryPostProcessor)와 PropertySourcesPlaceholderConfigurer ] Spring은 기본적으로 객체로 만들 빈 설정정보(BeanDefinitino)를 만들어둔 다음에 이를 바탕으로 객체를 생성한다. 이때 빈 설정정보(BeanDefinition)를 불러오고 조..
이번에는 @EnableWebMvc 어노테이션과 WebMvcConfigurer 인터페이스에 대해 알아보도록 하자. 1. Spring에서 제공하는 설정의 자동화와 변경 [ @Enable~ 을 이용한 설정 자동화 ] Spring 기반의 프로젝트를 구축하려고 하면 우리는 메세지를 변환하는 메세지 컨버터나 뷰를 렌더링 하기 위한 뷰 리졸버 등을 일일이 설정해주어야 했다. 하지만 매번 프로젝트를 생성할 때마다 동일한 설정들을 하는 것은 개발자들에게 비용의 낭비였고, 그래서 스프링은 이러한 부분들에 대해 최신 전략들을 기반으로 설정을 자동화하는 기능을 제공하기 시작하였는데, 그것이 바로 @Enable~ 로 시작하는 어노테이션이다. @Enable로 시작하는 애노테이션을 @Configuration이 붙은 설정 클래스에 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/8Hwlj/btq93m1xAoj/ano2xaOrSnrV90EdrgG1pk/img.png)
아래의 내용은 토비의 스프링 2권 5장을 읽고 정리한 내용입니다. 1. Spring의 AOP 프록시 구현 방법(JDK Dynamic Proxy, CGLib Proxy) [ AOP에 대한 이해 ] AOP는 부가 기능을 핵심 기능으로부터 분리하기 위해 등장한 기술이다. 부가 기능을 분리함으로써 우리는 해당 로직을 재사용할 수 있고, 핵심 기능은 핵심 역할에만 집중할 수 있도록 도와준다. Spring의 AOP는 기본적으로 프록시 방식으로 동작하도록 되어 있는데, Spring에서 AOP를 활용하기 위해서는 @EnableAspectJAutoProxy 어노테이션을 붙여주어야 하며, 이에 대한 옵션으로 proxyTargetClass가 있다. 그리고 이 옵션을 주지 않으면 스프링 빈을 찾지 못하는 등의 에러가 발생할 ..
Spring으로 개발을 하다 보면 DTO 또는 객체를 검증해야 하는 경우가 있습니다. 이를 별도의 검증 클래스로 만들어 사용할 수 있지만 간단한 검증의 경우에는 JSR 표준을 이용해 간결하게 처리할 수 있습니다. 이번에는 객체의 검증을 손쉽게 하는 방법에 대해 알아보고자 합니다. 1. @Valid와 @Validated[ @Valid를 이용한 유효성 검증 ]@Valid의 개념 및 사용법@Valid는 JSR-303 표준 스펙(자바 진영 스펙)으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션이다. JSR 표준의 빈 검증 기술의 특징은 객체의 필드에 달린 어노테이션으로 편리하게 검증을 한다는 것이다.Spring에서는 일종의 어댑터인 LocalValida..