자바의 컬렉션 중에서 List, Set, Map, Properties 4개의 타입은 어떻게 주입이 되는지 알아보겠다.

 

 

 

 

TestBean3라는 포조클래스에 위와 같이 필드를 선언하고 모든 필드에 대해서 getter, setter를 선언해주었다.

앞에 글에서 사용한 setter를 이용한 주입으로 자바 컬렉션 타입들에 주입을 시도해볼 것이다.

 

 

 

xml 파일에서 각각의 컬렉션타입의 setter주입을 할때, 이미 정의되어 있는 bean을 불러와서 사용할 때는 아래의 beans_data라는 이름의 bean을 공통적으로 사용하겠다.

 

 

 

 

 

 

 

 

1. List

 

 

bean1 이라는 빈 태그 안에 property 태그를 사용하여 setter주입을 시도한다.

List타입이기때문에 List태그 사용하고, 그 태그 안에 value태그를 이용하여 제네릭타입에 맞는 value값을 주입해준다.

 

최우선순위인 String형은 default의 느낌이라서 type정의를 안해주어도 상관없지만, 

int와 같은 다른 기본형들은 꼭 셋팅을 해주는 것이 좋다.

 

DataBean형인 List에 값을 넣는 "list3"의 경우,

주입할 bean을 직접 bean태그를 이용해서 넣어도 되고, ref bean을 이용하여 미리 정의되어 있는 beans_data를 넣어주어도 된다. beans_data는 prototype이므로 넣을 때마다 새로운 객체가 생성되겠다. 

 

 

 

다음과 같이 실행하면

 

 

이런결과를 얻을 수 있다.

 

 

 

 

 

 

 

2. Set

 

 

 

bean1 이라는 빈 태그 안에 property 태그를 사용하여 setter주입을 시도한다.

Set타입이기때문에 Set태그 사용하고, 그 태그 안에 value태그를 이용하여 제네릭타입에 맞는 value값을 주입해준다.

방법과 형태는 List와 똑같다.

 

 

Set은 중복된 값을 하나의 값으로 생각하여 한개만 넣는 특징이 있다.

그래서 위와 같이 여러개 같은 값을 찍어도, 

 

 

 

 

이렇게 한개만 출력된다.

<ref bean="beans_data" /> 를 두번찍었고, scope도 prototype이라서 다른 추가할 때마다 객체가 생성될것 같지만

id값이 동일한 bean이기 때문에 한개로 인식해서 한개만 출력한다.

 

 

 

 

 

 

 

3. Map

 

 

 

Map은 key와 value쌍으로 이루어져있는 형태이다. 

TestBean3클래스에 value는 Object형으로 선언하였기 때문에 어떤 형태의 값도 다 담을 수 있을 것이다.

 

map태그 안에 entry라는 태그를 사용하여 key값과 value값을 넣어준다.

value값이 String이 아닌 기본형일때는 위와같이 value-type이라는 속성으로 선언을 해주어야 한다.

 

새로운 bean 객체를 map에 집어 넣을 때에는 k3와 같이 하면 되고,

기존에 있는 bean을 넣을 때는 k4처럼 넣으면 된다. 

 

 

 

 

 

 

 

 

 

 

 

4. Properties

 

Properties는 문자열만 담을 수 있는 컬렉션이다.

 

 

 

props 태그 아래에 prop태그를 이용하여 key값과 그 안에 들어갈 value를 설정해준다.

Properties는 문자열 밖에 담을 수 없기 때문에 뭐 따로 value속성이나 이런게 존재하지는 않는것 같다. 저런 형식으로 넣어주면 된다.

 

'JAVA > Spring' 카테고리의 다른 글

Java코드를 활용한 Bean 등록  (0) 2020.04.10
자동 주입  (0) 2020.04.10
의존성 주입 (Dependency Injection)  (0) 2020.04.09
Bean 객체의 생성시점과 생명주기  (0) 2020.04.08
IoC 컨테이너  (0) 2020.04.07

+ Recent posts