재밌고 어려운 IT를 이해해보자~!
Dependency Injection(의존 주입) 본문
의존 주입에 들어가기에 앞서
팩토리 패턴 != 싱글톤 패턴 이다.
예시 코드에서, 싱글톤 유지 X
증프 코드에서는, 싱글톤 유지 O
[ IoC를 배울때에 함께 알아야하는 개념 ]
1) DI 란?
- Dependency Injection
- 의존 주입
개발자 -> 컨테이너(Spring 프레임워크)
1. 객체를 생성(new) 및 관리(호출시 해당 객체 메서드 수행)
2. 의존 주입
의존성 이란 ?
- 어떤 메서드를 수행할때에
- 다른 객체를 미리 new 해야하는 상황
1. 생성자 주입(Constructor Injecttion)
- 2번 방식보다 더 강제성이 짙음
- 생성자 주입 할떄에 에러가 발생하면 해당 객체는 생성 X == 필수적일때에 사용하는 방식
생성자 주입 전 xml
applicationContext.xml
<beans>
<bean class = "test.IPhone" />
<bean class = "test.GalaxyPhone" />
</beans>
생성자 주입 후 xml
<beans>
<bean class="test.IPhone" />
<constructor-args="applWatch" /> // 생성자 주입태그
</bean>
<bean class="test.AppleWatch" id="applWatch" lazy-init="true"/> //xml을 통해 new 한 애플워치가 사용된다.
<bean class="test.GalaxyWatch" id="galaxyWatch" lazy-init="true" />
<bean class=test.GalaxyPhone" />
<constructor-args= "galaxyWatch" /> // 생성자 주입태그 --> 워치에
</beans>
</beans>
2. Setter 주입(Setter Injection)
1번 방식보다 덜 강제적임
기본 생성자 + setter 를 활용하므로 기본 생성자를 반드시 필요로함
applicationContext.xml
<beans>
<bean class="test.TestBean">
<property name="testList" >
<list>
<value>홍길동</valeu>
<value>임꺽정</value>
<value>아무무</value>
</list>
</property>
<property name="testMap" >
<map>
<entry>
<key><value>홍길동</value></key>
<key><value>미드</value></key>
</entry>
<entry>
<key><value>임꺽정</value></key>
<key><value>원딜</value></key>
</entry>
<entry>
<key><value>아무무</value></key>
<key><value>정글/value></key>
</entry>
</map>
</property>
</bean>
</beans>
나의 메서드를 사용할때 다른객체를 사용하는것 -> 의존성
서로 교체할수있게 interfatce 지정
해당 interface맞춰준 후에
넣고싶은 생성자? ref ? 넣으면 된다.
게임 캐릭터
무기 없을수 있음
==> 2번 방식 주입
카트라이더
자동차없이는 캐릭터도 없다
==> 1번 방식 주입
'코리아IT핀테크과정' 카테고리의 다른 글
xml, annotation(@) (4) | 2024.02.28 |
---|---|
스프링 설치 (0) | 2024.02.27 |
스프링 프레임워크, Bean태그, 결합도 (2) | 2024.02.26 |
CKEditor [TEAM PROJECT] (0) | 2024.02.21 |
네이버 로그인 API [TEAM PROJECT] (0) | 2024.02.21 |
Comments