본문 바로가기
IT Study/Spring

Spring - 필드 주입(어노테이션 주입방식)

by hhyyyjun 2023. 1. 2.

xml의 단점

1) 너무 복잡하다

2) 의존관계를 파악하기가 어렵다

개발자들은 java 코드와 함께 의존관계를 파악하는 것을 선호

=> 자바 코드에 xml 설정을 추가

어노테이션 사용방법

1) context 네임스페이스를 추가

2) 어노테이션을 컨테이너가 사전에 스캔할 예정

=> 스캔 범위를 지정해주어야 함

3) <bean> 등록없이 자동으로 객체 생성가능

@component : 해당 클래스를 객체화해라

java = new VO();

xml == <bean id="vo" class="xxx.VO" />

어노테이션 == @component("vo") =>> bean을 대체하는 어노테이션이 컴포넌트

4) 의존성 주입(DI)

@Autowired - 멤버변수 뿐 아니라 메서드, 생성자에서도 사용 가능

해당 멤버변수의 타입을 체크

메모리를 확인해서 해당 멤버변수와 같은 타입을 주입해줌

메모리에 존재하는 객체라면 주입

@Qualifier("이름")

1) Autowired는 타입만 체크하기 때문에 Qualifier로 하나씩 지정해주어야 함

2) 의존관계가 달라질 경우 이름을 바꿔야 하는 단점이 있음

3) @Autowired의 대상이 @Component로 되어있는 것이 불리할 때가 있음

=> .xml 설정과 @설정을 함께 사용

@Component를 상속받는 어노테이션

Component를 사용하기보다 특정 작업부분에서 사용하는 어노테이션을 사용하게되면 속도의 장점이 있어 사용

1) @Repository - DAO에 사용하는 어노테이션

2) @Service - DAO를 멤버변수로 가지는 서비스

컴포넌트 사용

1. 컴포넌트만 해도 메모리 적재가 됨

2. 대신 분석하기 힘듦

3. 해당 클래스를 확실하게 하기 위해 어노테이션 괄호에 이름 지정


예시

클래스에서 @Component를 통해 객체화한 부분이 아래 사진에서 <bean> 을 통한 객체화와 같다.

위에서 지정한 'gw'를 Qualifier를 통해 이름 지정

==> 하지만 Qualifier의 단점 : 의존 주입의 변경이 필요한 경우로 인해 xml과 @를 함께 사용

applicationContext.xml

<bean>을 통해 객체화를 타겟 => Qualifier 필요 x

댓글