반응형

Spring Autowiring 'byType'

 

(원문 위치 : http://www.tutorialspoint.com/spring/spring_autowiring_bytype.htm )


Property type에 의한 autowiring으로 Spring container는 XML 설정파일에서 'byType'으로 설정된 autowire 속성중엣  bean을 찾는다. 그리고 만약 type이 설정파일에서 정확하게 하나와 일치하면 속성(property)를 묶는다.(wire). 만약 일치하지 않으면, exception을 발생시킨다.


예를 들면, 만약 bean 설정이 설정파일에서 'byType'으로 설정되어 있고 SpellChecker type의 spellChecker 속성(property)을 포함하면, Spring은 SpellChecker로 이름지어진  bean정의를 찾고 속성(property)을 설정하기 위해 이를 사용한다. 남은 속성(property)은 <property> 태그를 사용하여 묶을 수 있다.(wire) 아래 예제는 XML 설정파일이 변화된 것을 제외하면 이전 예제와 동일하다.


[003] HelloWorld Example 강좌를 참조하여 프로젝트를 생성한다.


TextEditor.java:

package com.tutorialspoint;

public class TextEditor {
   private SpellChecker spellChecker;
   private String name;

   public void setSpellChecker( SpellChecker spellChecker ) {
      this.spellChecker = spellChecker;
   }
   public SpellChecker getSpellChecker() {
      return spellChecker;
   }

   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }

   public void spellCheck() {
      spellChecker.checkSpelling();
   }
}

SpellChecker.java:

package com.tutorialspoint;

public class SpellChecker {
   public SpellChecker(){
      System.out.println("Inside SpellChecker constructor." );
   }

   public void checkSpelling() {
      System.out.println("Inside checkSpelling." );
   }
   
}

MainApp.java:

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");

      TextEditor te = (TextEditor) context.getBean("textEditor");

      te.spellCheck();
   }
}

Beans.xml일반적인 설정을 사용한 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-3.0.xsd">

   <!-- Definition for textEditor bean -->
   <bean id="textEditor" class="com.tutorialspoint.TextEditor">
      <property name="spellChecker" ref="spellChecker" />
      <property name="name" value="Generic Text Editor" />
   </bean>

   <!-- Definition for spellChecker bean -->
   <bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
   </bean>

</beans>

'byType'을 사용하는 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-3.0.xsd">

   <!-- Definition for textEditor bean -->
   <bean id="textEditor" class="com.tutorialspoint.TextEditor" 
      autowire="byType">
      <property name="name" value="Generic Text Editor" />
   </bean>

   <!-- Definition for spellChecker bean -->
   <bean id="SpellChecker" class="com.tutorialspoint.SpellChecker">
   </bean>

</beans>

실행 결과는 아래와 같다.

Inside SpellChecker constructor.
Inside checkSpelling.






반응형

+ Recent posts