반응형
SMALL
# Bean 객체 획득
ApplicationContext ctx = new ClassPathXmlApplicationContext("com/springinaction/springidol/spring-idol.xml");//이게 컨테이너를 생성하는 코드야//컨테이너로부터 특정 bean 객체의 참조 정보를 가져옴//첫번째 방법//id로만 가져오면 Object 타입으로 변환된다. 따라서 타입캐스팅 꼭 해줘야한다.Performer performer = (Performer) ctx.getBean("duke");//두번째 방법//타입을 지정하기때문에 타입캐스팅 필요 없다.Performer performer2 = ctx.getBean("duke", Performer.class);// 두가지 방법의 결과는 같음// Performer는 인터페이스인데 타입을 구현된 클래스로 쓰는게 아니고 인터페이스로 쓰는 이유는// 더 유연하게 사용이 가능하기 때문# 의존 관계 설정 1 - 생성자 방식 <constructor-arg>- Bean의 생성자를 통해 의존 객체 주입- 이용가능한 생성자가 bean 클래스에 정의되어 존재해야함* 효과- 컨테이너는 의존하는 빈 객체(A)를 먼저 생성- 의존 객체(불려지는 객체)나 값의 타입을 이용하고 적절한 생성자를 찾아 실행함 (value, ref를 보고)- 생성자 호출 시 의존객체나 값을 인자로 전달- <value>를 통해 전달되는 값은 기본적으로 String 타입으로 간주- type 속성을 이용하여 다른 타입으로 변환 가능<constructor-arg value="10" type="int" /># c 네임스페이스를 이용한 설정 = <constructor-arg> 쓴거랑 같은 효과- 속성에 쓰는 것이며 c 접두사를 붙인다.- 속성이니까 파라미터 순서 신경 안써도 된다.- <beans> 안에 c 접두사 선언xmlns:c="http://springframework.org/schema/c"- 클래스 내의 생성자에 선언해놓은 변수 이름 그대로 가져와서 쓴다.public Instrumentalist(String song, Instrument instrument) {} 였으니까
<bean id="kenny" class="com.springincation.springidol.Instrumentalist"c:song="Jingle Bell"c:instrument-ref="saxophone" /><!-- 클래스 내 생성자에 선언된 변수 이름 써주기! -->
- 단, 값이 아닌 객체를 주입하는 경우(constructor-arg의 ref)는 변수이름-ref를 붙여야한다!
- 파라미터 순서대로 할 수도 있다.
c:_0="Jingle Bell"
c:_1-ref="saxophone" 이렇게 _숫자 해서 표현한다.
여기서도 객체를 주입하는 경우는 -ref를 꼭 붙여야한다.
반응형
LIST
'SPRING' 카테고리의 다른 글
DI XML / Collection Wiring (property 방식) (0) | 2019.03.19 |
---|---|
DI XML / 의존 관계 설정 2 (property 방식) (0) | 2019.03.19 |
Spring Container (0) | 2019.03.18 |
AOP (Aspect-Oriented Programming) (0) | 2019.03.18 |
DI / 의존 관계 설정 방법 2 (Annotation 이용 방법) (0) | 2019.03.18 |