예제 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 메서드로) 여러 번 호출해도 동일한 인스턴스를 얻는다는 점을 상기하기 바란다.