더북(TheBook)

예제 4-2에서는 간단하게 getBean 메서드 호출을 포함하는 테스트 메서드 한 개를 생성했다. 여기서는 스프링 컨테이너가 SearchEngine 생성과 DocumentDAO 구현체의 주입을 어떻게 다루는지 알아보려고 한다.

3장의 XML 파일(mydocuments-context.xml)을 수정하지 않고 예제 4-2를 실행하면 다음과 같은 출력을 볼 수 있다.

 

$ gradle -Dtest.single=MyDocumentsTest test

:compileJava

:processResources

:classes

:compileTestJava

:processTestResources

:testClasses

:test

 

com.apress.isf.spring.test.MyDocumentsTest > testAll STARTED

2014-07-30 01:31:33,759 DEBUG [Test worker] SearchEngineService created: com.apress.isf.spring.service.SearchEngineService@2403896e

 

2014-07-30 01:31:33,881 DEBUG [Test worker] Document DAO set: com.apress.isf.spring.data.DocumentRepository@3748672e

 

com.apress.isf.spring.test.MyDocumentsTest > testAll PASSED

 

BUILD SUCCESSFUL

 

Total time: 7.98 secs

 

결과는 SearchEngineService 인스턴스 한 개와 DocumentDAO 인스턴스(구체적인 클래스인 DocumentRepository) 한 개다. 그런데 왜 그럴까? 스프링 프레임워크는 기본적으로 빈의 싱글턴 인스턴스만 생성하여 해당 빈을 (getBean 메서드로) 여러 번 호출해도 동일한 인스턴스를 얻는다는 점을 상기하기 바란다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.