반응형
빈 등록 메타정보 구성 전략(빈 설정방법)
앞에서 대표적인 빈 등록방법을 살펴보 았다. 그렇다면 자주 사용되는 설정방법을 살펴보자.
XML설정 단독 사용
- 장점 : 컨텍스트에서 생성되는 모든 빈을 XML에서 확인할 수 있음
- 단점 : 빈의 개수가 많아지면 XML 파일을 관리하기 번거로울 수 있음
XML과 빈스캐닝(어노테이션기반)의 혼용
- XML과 빈 스캐너에 의한 자동인식 방법을 함께 사용할 수 있다.
- 애플리케이션 3계층의 핵심 로직을 담고 있는 빈 클래스는 그다지 복잡한 빈 메타정보를 필요하지 않고 대부분 싱글톤이며 클래스당 하나만 만들어지므로 빈 스캐닝에 의한 자동인식 대상으로 적절하다.
- 반면에 자동인식 방식으로 등록하기는 불편한 기술 서비스, 기반 서비스, 컨테이너 설정 등의 빈은 XML로 사용하면 된다. (자동인식 방식으로 설정하기 어려운 DataSource, 트랜잭션 매니저 등은 <bean> 태그를 사용)
- 장점 : 효과적임, 기술 서비스나 컨테이너 설정용 빈은 초기 XML에 등록해 두고 개발이 진행되면서 만들어지는 애플리케이션 빈들은 스테레오 타입 애노테이션을 부여해서 자동스캔으로 등록할 수 있으므로 XML 설정파일에 더이상 손대지 않고도 편하게 개발이 가능하다. 테스트 중에 원하는 빈만 선별해서 등록하고 빠르게 테스트를 진행할 수 있다.
- 조심해야할 점 : 웹 기반의 애플리케이션에는 보통 두 개의 애플리케이션 컨텍스트가 등록돼서 사용된다. 따라서 한 번에 최상의 패키지를 지정하면 자칫 양쪽 컨텍스트의 빈스캐너가 같은 클래스를 중복해서 빈으로 등록해버릴 수도 있다. (비즈니스로직을 담은 UserService.java는 root-context에 등록돼야 하는 서비스 계층의 빈, AOP를 이용해 트랜잭션 부가기능이 적용되어있는 상태에서, 서블릿 컨텍스트에서 실수로 등록해버리면 트랜잭션 AOP 설정이 없는 서블릿 컨텍스트에서 만들어진 UserService 빈을 사용하게 된다.)
XML없이 빈 스캐닝 단독 사용
- 스프링 3.0에서 처음으로가능해 졌다. XML이 전혀 없는 스프링 애플리케이션 개발을 도전해볼 수 있다.
- 기존에 XML로 등록했던 기술 서비스 빈과 컨테이너 설정용 빈 등을 @Configuration 자바 코드를 이용한 설정 메타정보로 만든다. 그리고 @Configuration 클래스들을 모두 빈 스캔 대상에 포함시킨다.
- 장점 : 모든 빈의 정보가 자바 코드에 담겨 있으므로 빈의 설정정보를 타입에 안전한 방식으로 작성할 수 있다.
- 단점 : 스프링이 제공하는 스키마에 정의된 전용 태그를 사용할 수 없다. (aop, tx등을 비롯한 10여 개의 스키마와 그안에 정의된 전용 태그를 쓸 수 없게 됨)
반응형
'프로그래밍 노트 > SPRING' 카테고리의 다른 글
[Spring] 컨테이너가 자동등록하는 빈 (0) | 2018.09.07 |
---|---|
[Spring] 프로퍼티(properties) 다루기 (0) | 2018.09.07 |
[Spring] IoC(InversionOfControl) 컨테이너 5 (빈 등록방법) (0) | 2018.08.27 |
[Spring] IoC(InversionOfControl) 컨테이너 4 (0) | 2018.08.27 |
[Spring] IoC(InversionOfControl) 컨테이너 3 (0) | 2018.08.08 |