728x90
스프링 컨테이너 생성할때 치는 코드는
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
이 코드에서
ApplicationContext -> 인터페이스 이며 스프링 컨테이너임
스프링 컨테이너를 생성할 때 구성정보를 지정해줘야하는데 위 코드에서 해당 부분을 맡는 역할이 AppConfig.class 이다.
저렇게 하면 AppConfig.class에 있는 값들이 스프링 빈 저장소에 메소드가 빈 이름에 생성 객체가 빈 객체에 들어가지게 된다.
(빈 이름을 변경하고 싶다면 @Bean(name = "원하는 이름") 이런식으로 어노테이션을 붙여서 지정할 수도 있음 단, 빈 이름은 항상 다른 이름을 꼭 부여해줘야 한다.
AppConfig를 보고 스프링컨테이너는 의존관계를 주입함
스프링 빈 조회에서 부모타입으로 조회시 자식 타입도 함께 조회한다. 부모타입 조회시 자식 타입도 딸려온다고 생각하면됨 그래서 만약 object 타입으로 조회하면 모든 스프링 빈 조회 가능
BeanFactory 와 ApplicationContext
BeanFactory는 위 그림처럼 최상위 인터페이스이다
BeanFactory의 역할은 스프링 빈을 관리하고 조회하는 역할을 함
ApplicationContext 는 Bean을 상속받고 또 수많은 기능을 함
BeanDefinition라는 추상화가 있는데 이게 다양한 설정 형식을 지원해줌(xml 가능 java code 가능)
스프링 컨테이너는 자바 코드인지 xml인지 모르고 오직 BeanDefinition만 알면됨
728x90
'JAVA & SPRING' 카테고리의 다른 글
Spring Mysql 연동 (0) | 2023.08.07 |
---|