본문 바로가기

IT/Spring

JAVA-Springframework 조립기/스프링 조립기란(객체 조립기)

객체 조립기

DI에 대한 설명을 통해, 객체 생성에 사용 할 클래스르 ㄹ변경하기 위해 객체를 주입해주는 코드 한곳만 변경해주면 된다는것을 알게 되었다. 그렇다면, 실제 객체를 생성하는 코드는 어디에 있을까? 쉽게 생각하면 다음과 같은 main()메서드에서 객체를 생성한다고 떠올릴 수 있다.

Main() 메서드에서 의존 대상 객체를 생성하고 주입하는 방법이 나쁘진 않다. 이방법 보다 더 나은 방법이 있는데, 그것은 바로 객체를 생성하고 의존 객체를 주입해주는 클래스를 따로 작성하는 것이다. 의존 객체를 주입한다는 것은 서로 다른 두 객체를 조립해준다고 생각할 수 있는데, 이런 의미에서 이 클래스를

조립기라고도 표현한다.

 

예를들어, 앞서 작성했던 회원 가입이나 암호 변경 기능을 제공하는 클래스의 객체를 생성하고 의존 대상이 되는 객체를 주입해주는 조립기 클래스를 아래와 같이 작성 할 수 있습니다.

Assembler 메서드를 보면 MemberRegisterService 객체와 ChangePasswordService 객체를 생성할때 생성자를 통해 MemberDao 객체를 주입하는 것을 알 수 있다.

즉, Assembler 클래스는 객체를 생성하고, 각 객체가 의존하고 있는 객체를 주입해준다. 결과 적으로 Assembler가 생성한 객체는 아래 그림과 같다.

 

 

 

 

Assembler 클래스를 사용하는 코드는 다음처럼 Assembler객체를 생성한 뒤, get 메서드를 이용해서 필요한 객체를 구해서 사용하면된다.

 

만약, MemberDao 클래스가 아니라 MemberDao 클래스를 상속받는 CachedMemberDao 클래스를 사용해야한다면, Assembler에서 객체를 초기화 해주는 부분의 코드만 변경해주면 된다.

 

정리: 조립기는 객체를 생성하고 의존 객체를 주입해주는 기능을 제공한다.

또한, 특정 객체를 필요로 하는 곳에서 객체를 제공한다(예를 들어, Assembler 클래스의 getMemberRegisterService() 메서드는 MemberRegisertService 객체를 필요로 하는곳에서 사용한다.)