Spring 3 - XML 없이 Java만 사용해서 설정하기
들어가기 전에 : Spring의 설정 처리 방식
Spring의 설정
- Spring의 설정에는 크게 2가지가 존재
- 어떤 클래스를 Bean으로 인식할 것인지 설정
- Bean 내에서 사용할 속성값들을 설정
Bean 설정방식의 변화
- Spring 1.x
- Spring 2.0.x
- Spring 2.5.x
- Spring 3.0.x
- Spring 3.1.x (Java Config)
- Annotaion with Namespace
- @Enable...
- 이후, Spring 생태계 전체에 퍼져나가기 시작
Java Config을 왜 써야하는가?
- 문서 기반 방식(XML, properties, yml 등)은, 이 설정이 어디에서 어느 맥락으로 사용될지 알 수 없음. 별도로 찾아서 숙지하고 있어야 함
- 다만, 설정을 한곳에 몰아서 본다는 장점이 있음
- 문서 기반 방식은, 내가 속성을 잘 썼는지 못 썼는지 알수가 없음
- 컴파일 타임에 오타, 잘못된 속성값 등을 잡아주지 않아 잘못 쓰더라도 그냥 실행됨
- 런타임에 어디가 잘못된건지 알기 매우 힘듬
- Java Config는, 빈의 생명주기와 함께 설정이 어느 맥락으로 사용되는지 절차적으로 이해할 수 있음
- 프로그래밍 언어이므로, 에러를 컴파일타임에 잡을수 있음
- BreakPoint를 걸어 디버깅이 가능
- 리팩토링과 설정의 모듈화와 바꿔치기 가능
- 다만, 설정이 이곳저곳 흩어지게 됨에 주의
지금부터, (1) Bean을 등록하기 위한 Java Config와 (2) Properties를 처리하기 위한 Java Config를, 하나씩 사례를 들어가며 설명하겠습니다
1. Bean Java Config 처리(Root-context.xml 대체)
- <Bean> 태그를 통해 정의하던 방식을 대체한다
(1) Config 클래스 생성
@Configuration
public class MemberConfig {
@Bean
public MemberService memberService() {
return new MemberService();
}
@Bean
public MemberRepository memberRepository() {
return new MemberRepository();
}
}
- @Configuration
- Bean 설정이 담긴 클래스임을 알려주는 어노테이션