공부하며 중요하다 싶은 내용들을 블로그에 공부겸 정리한 내용입니다! 지적 댓글 환영합니다~
스프링은 객체 컨테이너 이다!
스프링의 핵심 기능은 객체를 생성하고 초기화하는 것 이다. 이와 관련된 기능은 ApplicationContext라는 인터페이스에 정의되어 있다.
AnnotationConfigApplicationContext 클래스는 이 인터페이스를 알맞게 구현한 클래스 중 하나다.
AnnotationConfigApplicationContext 클래스는 자바 클래스에서 정보를 읽어와 객체 생성과 초기화를 수행하게 됩니다!
XML, 그루비 설정코드를 사용하여 객체 생성/초기화를 하는 클래스도 존재합니다.
우선 다음 다이어그램을 살펴보실까요?
BeanFactory : 객체 생성과 검색에 대한 기능을 정의한다. 예를들어 getBean()이 있다, 싱글턴/프로토타입 여부 확인하는 기능 제공
ApplicationContext : 메시지, 프로필/환경 변수 등을 처리하는 기능을 정의
AnnotationConfigApplicationContext : 자바 어노테이션을 이용하여 클래스로부터 객체 설정 정보를 가져온다.
GenericXmlApplicationContext : XML로부터 객체 설정 정보를 가져온다.
GenericGroovyApplicationContext : groovy 코드를 이용해 설정 정보를 가져온다.
위 3개의 구현 class중 어떤것을 사용하더라도 설정 정보로부터 Bean이라 불리는 스프링 객체를 생성하고 그 객체를 내부에 보관한다.
getBean() 메서드 호출시 해당 빈 객체를 제공하게 됩니다.
▶ 다음 예시를 하나 살펴보시죠!
// 설정 정보를 이용하여 빈 객체를 생성한다.
AnnotationConfigApplicationContext containBean = new AnnotationConfigApplicationContext(AppContext.class)
// 빈 객체를 제공한다.
Greeter g = containBean.getBean("greater", Greeter.class);
new AnnotationConfigApplicationContext(AppContext.class) 을 통해 스프링컨테이너를 생성할때 설정정보 클래스(AppContext.class) 를 넘겨주어 빈을 생성하게 된다.
▶ ApplicationContext(or BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 를 담당하고 있어서 Container 라고도 부른다.
▶ 빈 객체는 싱글톤 이다! 한 개의 @Bean 애노테이션에 대해 한개의 빈 객체를 생성한다.
'BackEnd > Spring' 카테고리의 다른 글
[Spring] 스프링 핵심 원리 이해1 - 예제 만들기 (0) | 2022.01.31 |
---|---|
[Spring] SOLID 원칙 (좋은 객체지향 설계의 5가지) (0) | 2022.01.31 |
[Spring] AOP : Aspect Oriented Programming (0) | 2022.01.14 |
[Spring] 스프링 DB 접근 기술 (0) | 2022.01.14 |
[Spring] 회원 관리 예제 - 웹 MVC 개발 (0) | 2022.01.14 |
댓글