본문 바로가기
JavaScript/Spring

[spring framework]스프링 프레임워크 DI_의존성주입_다중 변수 맵핑(3)

by Alkaloid 2022. 1. 28.
반응형
반응형

지난번에 생성자 인젝션을 배웠습니다.

컨테이너는 기본적으로 bean에 등록된 순서대로 객체를 생성하고, 기본 생성자를 호출하게 되어 있습니다.

 

그럼 순서대로 객체를 생성한다고 했는데, 초기화해야할 멤버변수가 여러개 일때는 어떡해야 할까요?

여러개일때는 당연히 여러개의 값을 한번에 주면 해결이 되겠죠.

한번 해볼까요?

SamsungTV클래스에 위를 추가해줍니다.

자 새로운 단어가 보이죠? price라는것이 새로 생겼습니다.

그럼 맨위에 price를 사용한다고 선언을 해줘야 합니다.

위 사진을 보면 private int price를 추가했습니다.

 

그리고 xml에 변수에 추가한 만큼 엘리먼트를 추가해 주려 합니다.

위와 같이 <constructor-arg>엘리먼트를 추가해 줍니다.

위에는 없지만<bean id = "tv" class=          > 처럼 앞에 id를 적어줘야 합니다!

그리고 저는 ref="apple"이라고 썼지만 기존에 이어서 하시는분들은 sony를 써주셔야 합니다!

 

자 그럼 이제 코드 설명을 할텐데, 제 설명을 보고 코드에서 오류를 찾아보세요!

그럼 위의 코드를 보면 <constructor-arg>속성에 ref와 value가 있습니다. 우리는 이 속성을 통해 생성자 매개변수로 값을 전달하는것입니다. 전달을 하려고 하는 데이터가 이미 bean으로 등록된 객체라면 ref속성을 이용하여, 객체의 아이디나 이름을 참조합니다.

하지만 기본형데이터(정수,문자,문자열등)일때는 value속성을 이용하면 됩니다.

 

설명을 보시고 바로 위 코드를 보면 이상한 점이 있지 않나요? 분명 저는 인자로 전달할 데이터가 bean에 등록되어 있으면 ref속성을 쓴다했는데, 위코드의 ref는 apple이고..맨아래 등록된 bean은 sony죠? 그럼 오류가 납니다..그래서 제가 일부러 id부분을 지워놨어요.

 

만약..생성자가 되게 많아서 무엇을 호출해야할지 모른다? 라고 할때는 index라는 속성도 있습니다.

ref나 value앞에 index="0" index="1"...처럼 인덱스를 0부터 증가시키면 됩니다.

index="0" ref= "sony"

index="1" value="3000" 

처럼 말이죠.

 

오늘 해본 것은 다중 변수 맵핑입니다.

말 그대로 변수가 여러개일때, 어떻게 맵핑을 해야 하는지에 대해 알아본것입니다.

반응형