더북(TheBook)

빈을 요청할 때마다 새로운 인스턴스를 얻는다는 것을 증명하고자 Main 클래스를 생성하고 컨텍스트에 빈을 두 번 요청한다. 참조 값이 다르다는 것을 확인할 수 있고 다음 예제에서 Main 클래스 정의를 찾을 수 있다.

예제 5-5 Main 클래스에서 프로토타입 빈에 대한 Spring 동작 테스트하기

public class Main {

    public static void main(String[] args) {
        var c = new AnnotationConfigApplicationContext(ProjectConfig.class);

        var cs1 = c.getBean("commentService", CommentService.class);
        var cs2 = c.getBean("commentService", CommentService.class);

        boolean b1 = cs1 == cs2; ← 두 변수 cs1과 cs2가 서로 다른 인스턴스를 참조한다.
        System.out.println(b1); ← 항상 ‘false’가 콘솔에 출력된다.
    }
}

앱을 실행하면 콘솔에 항상 false가 출력되는 것을 볼 수 있는데, 이는 getBean() 메서드를 호출할 때 받은 두 인스턴스가 서로 다르다는 것을 증명한다.

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