Bean 의존관계 설정방법

Setter Injection : <property> 태그

  • Setter 메서드를 통해 의존관계가 있는 bean을 주입하려면 <property> 태그를 사용할 수 있다.
  • ref 속성을 사용하면 빈 이름을 이용해 주입할 빈을 찾는다.
  • value 속성은 단순 값 또는 빈이 아닌 객체를 주입할 때 사용한다.


Constructor Injection : <constructor-arg> 태그

  • Constructor을 통해 의존관계가 있는 빈을 주입하려면 <constructor-arg> 태그를 사용할 수 있다.
  • Constructor의 주입방식은 생성자의 파라미터를 이용하기 때문에 한번에 여러개의 객체를 주입할 수 있다.

인덱스 지정
파라미터 이름 지정


POJO 클래스 수정 및 Bean 설정 파일 수정


프로퍼티(Property) 값 설정 방법

단순 값(문자열이나 숫자)의 주입 (injection)

  • setter 메서드를 통해 Bean의 레퍼런스가 아니라 단순값을 주입하려고 할 때는 <property> 태그의 value 속성사용
<bean id="hello3" class="myspring.di.xml.Hello">
  <property name = "name" value="스프링" />
</bean>

컬렉션(Collection) 타입의 값 주입 (injection)

  • Spring은 List, Set, Map, Properties 와 같은 컬렉션 타입을 xml로 작성하여 프로퍼티에 주입하는 방법을 제공한다.
  • List, set 타입 - <list> <value> 태그 이용
  • 프로퍼티가 Set 타입이면 <list> 대신 <set>을 사용한다.

  • Map 타입 : <map>, <entry> 태그를 이용


POJO 클래스 및 Bean 설정파일 수정


DI 테스트 클래스 수정


프로퍼티(property) 파일을 이용한 값 설정 방법

환경에 따라 자주 변경되는 내용의 분리

  • xml의 빈 설정 메타정보는 애플리케이션 구조가 바뀌지 않으면 자주 변경되지 않는다.
  • 반면에 프로퍼티 값으로 제공되는 일부 설정정보 (DB 연결정보 등) 은 애플리케이션이 동작하는 환경에 따라 자주 바뀔 수 있다.
  • 변경되는 이유와 시점이 다르다면 분리하는 것이 맞다.
  • 환경에 따라 자주 변경될 수 있는 내용은 properties파일로 분리하는 것이 가장 깔끔하다. 키와 값의 쌍 (key=value)로 구성하면 된다.

환경에 따라 자주 변경되는 내용의 분리 예시

<bean id="dataSource"
	class="org.springframework.jdbc.datasource.SimpleDriverSource">
    <property name="driverClass" value="com.sql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/testdb" />
    <property name="username" value="spring" />
    <property name="password" value="123" />
</bean>
  • 프로퍼티 파일로 분리한 정보는 ${} 프로퍼티 치환자를 이용하여 설정한다.
  • ${} 값을  치환해주는 기능은 <context:property-placeholder> 태그에 의해 자동으로 등록되는 PropertyPlaceHolderConfigurer Bean이 담당한다.


Bean 설정파일 수정

프로퍼티 파일 생성


DI 테스트 클래스 수정

'Back-end > Spring' 카테고리의 다른 글

사용자 관리 프로젝트  (0) 2021.06.10
DI 애플리케이션 작성(4)  (0) 2021.06.10
DI 애플리케이션 작성(2)  (0) 2021.06.10
DI 애플리케이션 작성(1)  (0) 2021.06.10
IoC와 DI  (0) 2021.06.09

+ Recent posts