간단한 스프링 애플리케이션 / bean

corncheese·2023년 6월 6일
0

Spring

목록 보기
2/8

스프링 DI 기능을 사용하는 간단한 스프링 애플리케이션
스프링 DI 기능을 사용하기 위해선 다음과 같은 단계를 밟아야 한다.

  1. 애플리케이션에 쓰이는 여러 객체와 객체 간의 의존 관계를 파악한다.
  2. 1단계에서 파악한 각 애플리케이션 객체에 상응하는 POJO 클래스를 만든다.
  3. 애플리케이션 객체 간 의존 관계를 표현하는 설정 메타데이터를 만든다.
  4. 스프링 IoC 컨테이너의 인스턴스를 만들고 설정 메타데이터를 인스턴스에 전달한다.
  5. 스프링 IoC 컨테이너 인스턴스로 애플리케이션 객체에 접근한다.
  1. 애플리케이션 객체 간 의존 관계를 표현하는 설정 메타데이터를 만든다.

설정 메타데이터는 애플리케이션에 필요한 엔터프라이즈 서비스(트랜잭션 관리, 보안, 원격 접근 등) 정보를 지정한다.
예를 들어 스프링에서 트랜잭션을 관리한다면 설정 메타데이터에서 PlatformTransactionManager 인터페이스를 구현하고 설정해야 한다.

애플리케이션이 미들워어나 DB 등과 상호작용한다면, 더 쉽게 상호 작용할 수 있는 스프링 객체를 설정 메타데이터안에서 정의해야 한다.

설정 메타데이터를 스프링 컨테이너에 전달하는 방법은 XMl파일을 사용하는 방법과 POJO클래스에 에너테이션을 설정하는 법이 있다.(@configuration)

설정 메타데이터를 XML 형식으로 제공

-> 의존 관계가 들어 있는 애플리케이션 컨텍스트 XML 파일을 만들어야 한다.

...
<bean id="contoller" class="spring.app.TestController">
 <property name="TestService" ref="service">
</bean>
...
  • bean 엘리먼트는 스프링 컨테이너가 관리할 애플리케이션 객체를 설정한다. 스프링 용어로 bean 엘리먼트를 빈 정의라고 부르고, 스프링 컨테이너가 빈 정의에 따라 만들어내는 객체를 빈이라고 부른다.
    -> bean 엘리먼트로 설정되는 애플리케이션 객체는 스프링 컨테이너가 관리하므로 이를 생성하고 의존 관계를 주입할 책임도 스프링 컨테이너에 있다.

  • property 엘리먼트는 bean 엘리먼트가 설정하는 빈의 의존관계를 지정한다. property 엘리먼트는 스프링 컨테이너가 의존 관계를 설정하기 위해 호출할 자바빈스타일 세터메서드와 대응된다.

  • name 속성은 빈의 자바빈 스타일 세터 메서드를 가리킨다. 세터 메서드는 ref 속성이 가리키는 빈의 타입과 같은 인수를 받는다.

세터 메서드를 이용한 의존 관계 주입

빈 클래스의 세터 메서드를 이용해 의존 관계가 주입되는 과정을 이해하기 위해, controller 클래스를 다시 살펴보기.

'''
// 세터기반 DI 
public class TestController{
	private TestService testService;
    
    public setTestService(TestService testService){
    	test.testService = testService;
    }
}

--> TestContoller 빈이 property 엘리먼트를 통해 TestSetvice 빈에 의존 관계를 정의하는 절차.
property 엘리먼트의 name 속성의 경우 빈 클래스에는 자바빈 스타일 세터 메서드 이름과 대응하며, 스프링 컨테이너는 빈 생성 시 이 세터 메서드를 호출한다.
property 의 ref속성은 인스턴스를 생성한 다음 자바빈 스타일 세터 메서드에 전달할 빈을 가리킨다.이 ref 속성값은 설정 메타데이터에 있는 bean 엘리먼트 중 하나의 id 속성값과 일치해야 한다.

0개의 댓글