빈 등록 메타정보 구성 전략 1 : XML단독사용
모든 빈을 명시적으로 xml에 등록하는 방법이다.
생성되는 모든 빈을 xml에서 확인 할 수 있다는 장점이 있으나 빈의 개수가 많아지면 xml파이을 관리하기 힘들다.
여러 개발자가 같은 설정파일을 공유해서 개발하면 충돌이 일어날 수 있다.
DI에 필요한 적절한 setter메서드나 constructor가 코드내에 반드시 존재해야 한다.
빈 등록 메타정보 구성 전략 2 : XML과 빈 스캐닝(Bean scanning)의 혼용
빈으로 사용될 클래스에 특별한 어노테이션을 부여하면 클래스를 자동으로 찾아서 빈으로 등록한다.
특정 어노테이션이 붙은 클래스를 자동으로 찾아서 빈으로 등록하는 방식을 빈 스캐닝을 통한 자동인식 빈 등록기능이라고 한다.
어놑이션을 부여하고 자동 스캔으로 빈을 등록하면 xml문서 생성과 관리에 따른 수고를 덜어주고 개발 속도를 향상시킬 수 있다.
빈들간의 의존관계를 한눈에 파악할 수 없다는 단점이 있다.
빈 등록 및 의존관계 설정 Annotation
1. Bean등록 Annotation
@Component : 컴포넌트를 나타내는 일반적인 스테레오 타입으로 <bean>태그와 동일한 역할
@Repository : persistence레이어, 영속성을 가지는 속성(파일, DB)을 가진 클래스
@Service : 서비스 레이어, 비즈니스 로직을 가진 클래스
@Controller : 프레젠테이션레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스
=>@Repository, @Service, @Controller 는 @Component의 구체화된 형태이다.
2. Bean 의존관계 주입 Annotation
@Autowired :
정밀한 의존관계 주입(DI)에 유용하다.
프로퍼티, setter메서드, 생성자, 일반메서드에 적용이 가능하다.
의존관계를 주입할 때의 기준은 Type이다. (자료형을 기준으로 DI)
<property>, <constructor-arg>태그와 동일한 역할을 한다.
@Resource :
프로퍼티, setter메서드에 적용이 가능하다.
의존관계를 주입할 때의 기준은 Name이다. (클래스이름을 기준으로 DI)
@Value :
단순한 값을 주입할 때 사용되는 어노테이션이다.
@Value(“Spring”)은 <property … value=”Spring”/>과 동일한 역할을 한다.
@Qualifier :
타입을 찾아서 의존관계를 주입하는 @Autowired에 같이 사용되며, 동일한 타입의 Bean객체가 여러 개 존재할 때 특정 Bean을 찾기 위해 사용한다.
Component Scan을 지원하는 태그
@Component를 통해 자동으로 Bean을 등록하고, @Autowired로 의존관계를 주입받는 어노테이션을 클래스에서선언했을 경우에 해당 클래스가 위치한 특정 패키지를 Scan하기 위한 설정을 XML에 해주어야 한다.
<context:component-scan base-package=”myspring.di.annot>
<context:include-filter>태그와 <context:exclude-filter>태그를 사용하여 자동 스캔에 포함시킬 클래스와 제외시킬 클래스를 명시할 수 있다.
'공부 > 스프링프레임워크' 카테고리의 다른 글
[spring] Spring JDBC (0) | 2021.11.17 |
---|---|
[spring] 사용자 관리 프로젝트 아키텍쳐 (0) | 2021.11.11 |
[spring] DI, DL (0) | 2021.11.11 |
[spring] 디자인패턴, 스프링 프레임워크 (0) | 2021.11.11 |
[spring] sw재사용을 높이는 방안 (0) | 2021.11.11 |