ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA/SPRING] 의존객체 자동 주입
    개발/Java 2019. 2. 27. 01:37

    의존객체 자동 주입

    의존객체 자동 주입이란?

    • 의존 객체를 주입할 때, <constructor-org>또는 <property>태그로 대상 객체를 명시하지 않아도, 스프링 컨테이너가 자동으로 대상 객체를 찾아서 주입해 주는 기능

    @Autowired

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

    • 생성자, 프로퍼티, 메소드 다 사용 가능

    해당 생성자, 프로퍼티, 메소드 위에 @Autowired annotation을 추가한다.

    // WordRegisterServiceUseAutoWired.java

    @Autowired
    public WordRegisterServiceUseAutowired(WordDao wordDao) {
    this.wordDao = wordDao;
    }

    xml 파일에서, annotation-config 추가를 통해 annotation 사용을 명시한다.

    //appCtxUseAutowired.xml

    <?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="wordDao" class="com.word.dao.WordDao" >
    <!-- <qualifier value="usedDao"/> -->
    </bean>
    <bean id="wordDao2" class="com.word.dao.WordDao" />
    <bean id="wordDao3" class="com.word.dao.WordDao" />

    <bean id="registerService" class="com.word.service.WordRegisterServiceUseAutowired" />

    <bean id="searchService" class="com.word.service.WordSearchServiceUseAutowired" />

    </beans>

    만약 생성자가아닌 프로퍼티,메소드에서 @Autowired를 사용하려면, 디폴트(기본) 생성자를 명시해야 한다.

    @Resource

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

    • 생성자에는 사용 불가 (프로퍼티, 메소드에 사용 가능)

    // WordRegisterServiceUseResource.java

    @Resource
    private WordDao wordDao;

    public WordRegisterServiceUseResource() {

    }

    //appCtxUseResource.xml

    <?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="wordDao" class="com.word.dao.WordDao" >
    <!-- <qualifier value="usedDao"/> -->
    </bean>
    <bean id="wordDao2" class="com.word.dao.WordDao" />
    <bean id="wordDao3" class="com.word.dao.WordDao" />

    <bean id="registerService" class="com.word.service.WordRegisterServiceUseAutowired" />

    <bean id="searchService" class="com.word.service.WordSearchServiceUseAutowired" />

    </beans>

    프로퍼티,메소드에서 @Resource를 사용하므로, 디폴트(기본) 생성자를 명시해야 한다.


    댓글

Designed by Tistory.