의존 객체 자동 주입이란?
스프링 설정 파일에서 의존 객체를 주입할 때 <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 처럼 사용할 수 있습니다.
'BackEnd > Spring' 카테고리의 다른 글
필수 셋팅 - 패키지를 컨테이너에 올려쓰기 (0) | 2020.06.18 |
---|---|
MySQL DB 연동하기 (0) | 2020.06.11 |
스프링 설정 파일 분리 및 빈(Bean)의 범위 (0) | 2020.06.07 |
다양한 의존 객체 주입 방법 (0) | 2020.06.07 |
의존 객체 주입(DI)은 무엇인가? (0) | 2020.06.07 |