[Spring] DI, 의존 주입
★DI(Dependency Injection, 의존성 주입) 객체 구동에 다른 객체가 필요하게끔 만드는 프로그래밍 방법. 기능이 다른 두 객체를 분리해서 구현하는 것이다. 예를들어 건전지와 장난감을 분리하는 것
★스프링 컨테이너가 모든 객체의 인스턴스를 가져야 하기 때문에 사용하는 기능이다.
★ DI방식1
생성자(
★생성자를 이용한 DI
★setter를 이용한 DI
★setter를 이용한 DI - 리스트 넣기
★setter를 이용한 DI - 맵 넣기
<enrty>
<key>
<value>엘로이</value>
</key>
<value>샤이니@naver.com</value>
</entry>
<enrty>
<key>
<value>제스퍼</value>
</key>
<value>샤이니@naver.com</value>
</entry>
</property>
★또한 기능별로 applicationContext(스프링 설정파일이라고 한다)를
여러 파일로 분리한 뒤
String[] appCtxs = {“classpath:appCtx1.xml”, “classpath:appCtx2.xml”, “classpath:appCtx3.xml”};
GenericXmlApplicationContext ctx =
new GenericXmlApplicationContext(appCtxs);
이렇게 배열을 사용해서 context를 로드할 수도 있고,
하나의 설정파일에서 import해서 모아놓은 뒤 사용할 수도 있다.
★Bean의 범위 스프링 컨테이너에서는 기본적으로 싱글톤으로 인스턴스들을 생성한다. 따라서 똑같은 id값의 객체를 스프링 설정파일에서 불러오게되면 같은 값만이 튀어나오게 된다. 다만 bean의 속성 중 scope=”prototype”을 설정하면 getBean을 호출할 때 마다 새로운 객체를 생성하게 된다.