본문 바로가기

BackEnd/Spring

의존 객체 자동 주입(Autowired, Resource)

의존 객체 자동 주입이란?

스프링 설정 파일에서 의존 객체를 주입할 때 <constructor-org> 또는 <property> 태그로 의존 대상 객체를 명시하지 않아도 스프링 컨테이너가 자동으로 필요한 의존 대상 객체를 찾아서 의존 대상 객체가 필요한 객체에 주입해 주는 기능입니다.

 

자동 주입하는 방법으로는 @Autowired 또는 @Resource라는 어노테이션을 이용하면 되고 주로 현업에서도 많은 개발자분들이 사용하고 있는 방법이기도 합니다.

 


어노테이션 작성 전 컨텍스트 XML에서 해야할 일

 

자동주입 전 코드

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="memberDAO" class="패키지.MemberDAO" />
	
	<bean id="registerService" class="패키지.MemberRegisterService">
		<constructor-arg ref="memberDAO" />
	</bean>

</beans>

 

자동주입 후 변경된 코드

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
	xmlns:context="http://www.springframework.org/schema/context"  
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans.xsd 
						http://www.springframework.org/schema/context 
						http://www.springframework.org/schema/context/spring-context.xsd">

	<context:annotation-config />

	<bean id="memberDAO" class="패키지.MemberDAO" />
	
	<bean id="registerService" class="패키지.MemberRegisterService" />

</beans>

 

1. beans 태그 안에 xmlns:context="www.springframework.org/schema/context" 코드 추가

2. xsi:schemaLocation 값에 http://www.springframework.org/schema/context 코드 추가

3. xsi:schemaLocation 값에 http://www.springframework.org/schema/context/spring-context.xsd 코드 추가

4. beans 태그 내부 최상단에 <context:annotation-config /> 태그 추가

5. 의존 객체를 필요로 하는 객체(registerService)에서 의존 객체(memberDAO) 코드 제거

 


 

@Autowired

주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입한다.

 

생성자에는 상관없지만 멤버변수나 메서드에 사용할 시 기본 생성자()가 반드시 있어야합니다.

그 이유는 기본 생성자가 호출이 되어야만 찾을 수 있기 때문입니다.

 

 

@Resource

주입하려고 하는 객체의 이름이 일치하는 객체를 자동으로 주입한다.

 

생성자에는 사용할 수 없고 그 외 Autowired 처럼 사용할 수 있습니다.