프리 정보 컨텐츠

스프링부트 @Autowired의 원리와 DI주입 본문

JAVA/SpringBoot Annotation

스프링부트 @Autowired의 원리와 DI주입

쏜스 2021. 7. 4. 17:42

@Autowired를 사용하기 전에 어노테이션을 사용하지 않는 경우는 어떠한 상황이며 왜 어노테이션을 사용해야하는지에 대한 의문이 생겨서 정리하고자 합니다.

<bean id="b" class="data B2"/>
<bean id="console" class="servise.S">
	<property name="b" ref="b"/>
</bean>

위의 예제는 어노테이션을 사용하지않고 XML로 설정할 때의 객체 설정 방법입니다.

B2를 사용하다가 업데이트 할 경우 B3로 대체해주어야 하는 경우를 예로 들겠습니다.

 

새로운 객체를 B3로 바꾸어줄경우에 class에 있는 코드를 data B3로 수정해주어야 합니다.

이런 귀찮음(?)을 해결해주기위해 객체를 바꾸었을 때 설정도 같이 바꾸도록 하기 위해 어노테이션을 사용합니다.

 

스프링에서 코드를 읽을 수 있도록 메타 데이터인 @Component 를 붙여 이를 객체화합니다.

설정파일 없이 코드내에서 어노테이션을 사용함으로써 객체를 바꾸어주는 간편함이 어노테이션의 가장 큰 장점입니다.

 

그렇다면 spring에서 흔히 볼 수 있는 @Autowired는 무슨 역할을 하는 것일까요?

마찬가지로 XML에서 작성하던 코드를 예로 들어보겠습니다.

<property name="exam" ref="exam"/>

위의 XML코드를 어노테이션으로 사용할 때에 

필요한 Setter부분에 @Autowired를 지정해줌으로써 자동으로 객체를 연결해주는 역할을 합니다.

추가적으로 @Autowired를 할 때는 namespace에서 context를 지정해주고 

<context:annotation-config/> 를 지정해주어야 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

Comments