더북(TheBook)

Main 클래스에서 두 서비스에 대한 참조를 가져오고 의존성을 비교하여 스프링이 두 서비스 다 동일한 인스턴스를 주입했음을 증명할 수 있다. 다음 예제는 메인 클래스를 보여 준다.

예제 5-3 Main 클래스에 싱글톤 빈을 주입하는 스프링 동작 테스트하기

public class Main {

    public static void main(String[] args) {
        var c = new AnnotationConfigApplicationContext( ← 구성 클래스를 기반으로 스프링 컨텍스트를 생성한다.
                ProjectConfig.class);

        var s1 = c.getBean(CommentService.class); ← 스프링 컨텍스트에서 두 서비스 빈에 대한 참조를 가져온다.
        var s2 = c.getBean(UserService.class); ← 스프링 컨텍스트에서 두 서비스 빈에 대한 참조를 가져온다.

        boolean b = ← 스프링이 주입한 리포지터리 의존성에 대한 참조 값을 서로 비교한다.
                s1.getCommentRepository() == s2.getCommentRepository();
        System.out.println(b); ← CommentRepository 의존성이 싱글톤이므로 두 서비스는 동일한 참조를 사용한다. 따라서 이 b 값은 항상 콘솔에 ‘true’로 출력된다. 
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.