빈을 요청할 때마다 새로운 인스턴스를 얻는다는 것을 증명하고자 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() 메서드를 호출할 때 받은 두 인스턴스가 서로 다르다는 것을 증명한다.