- DI(의존관계설정) - Spring : 의존 관계 주입 경량화 컨테이너

  의존성? 어떤 클래스가 자신의 임무를 다하기 위해 필요한 값(필드 값) 이나 사용할 다른 클래스와의 관계를 말한다.

  주입? 어떤 클래스의 인스턴스에 대한 외부로 부터 '의존성'을 설정하는 것을 말한다.


- 컨테이너가 하는 역할

  어떤 클래스가 필요로 하는 값이나 인스턴스를 생성, 취득하고, 그 클래스의 인스턴스에 대해 설정하는 것

  이렇게 하면 필요한 인스턴스를 생성, 취득하는코드를 직접 만들지 않아도 되고, 그 결과 클래스간 관계가 느슨한 결합이 되어

  의존성이 약해진다.


- 스프링을 사용해 Bean을 취득하는 기본적인 절차

  1. Bean 팩토리를 생성한다.

  2. Bean 팩토리로 부터 Bean을 취득한다.

  ex) 

  // Bean 팩토리 생성

  BeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));

  - FileSystemResource 클래스의 생성자에는 XML 정의 파일을 지정한다.

    XML 정의 파일(beans.xml)의 정보를 사용하는 BeanFactory 인스턴스 생성

  // Bean 취득

  MessageBean bean = factory.getBean("MessageBean", MessageBean.class); // bean.xml id 값과 일치한 값 등록

  - Bean 을 취득한 후 클래스 내의 메서드 사용




- 설정파일(beans.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"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- OneToOne bean -->

    <bean id="messageBeanOneToOne" class="OneToOne.sample3.MessageBeanKr" />

</beans>

  - id : Bean에 고유한 이름을 붙이기 위함.

  - class : id 속성에 의해 설정된 실제의 클래스이름(패키지이름 + 클래스 이름)






- 의존 관계 주입방법의 2가지 ( 생성자 & 메서드 )

  1. 생성자를 통한 주입

     생성자를 사용해 의존 관계를 주이하는 것을 말한다.

     ex)

     Foo.java ----------

     public Class Foo {

         private Bar bar;

         public Foo(Bar bar){

             this.bar = bar;

         }

     }



  2. 설정 메서드를 통한 주입

     Foo.java ----------

     public class Foo {

         private Bar bar;

         public setBar(Bar bar) {

             this.bar = bar;

         }

     } 


+ Recent posts