소스코드 다운받기

3-1 스프링을 이용한 객체 생성과 조립

DI 비교

  • DI를 활용하지 않은 코드
    • 내가 필요한 객체를 내가 생성
// Main.java
MyCalculator myCalculator = new MyCalculator();
myCaculator.setCalculator(new Calculator());
  • DI를 활용한 코드
    • 외부에서 객체를 생성하고 주입
// Main.java

String configLocation = "classpath:applicationCTX.xml";

// xml파일에서 컨텍스트를 가져와서 ctx 변수에 담음
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);

// ctx에서 bean을 가져온다 getBean("bean id", 클래스명.class);
MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class);

// 가져온 bean을 이용해 myCalculator 클래스 안에서 선언된 add 메서드 사용
myCalculator.add();

// xml 컨텍스트인 ctx를 닫아준다
ctx.close();
<!-- applicationCTX.xml -->
<beans>
    <!-- MyCalculator 클래스에 대한 객체 생성 -->
    <!-- id는 변수설정한 것, class는 패키지.클래스이름 -->
    <bean id="myCalculator" class="com.javalec.ex.MyCalculator">
        <!-- setter로 초기화하는 필드는 property로 설정-->
        <property name="calculator">
            <ref bean="calculator" />
        </property>
        <property name="firstNum" value="10"></property>
        <property name="secondNum" value="2"></property>
    </bean>
</beans>

참고자료