스프링의 BeanDefinition
2022. 1. 14. 08:28
Spring
BeanDefinition이란? 단어 그대로 스프링 빈의 설정 메타 정보이다. 각 @Bean, 당 각 하나씩 메타 정보가 생성된다. 스프링 컨테이너는 이 메타 정보를 기반으로 스프링 빈을 생성한다. 어떻게 다양한 설정 방식을 지원 할까? 해당 글에서 빈 설정 방식을 자바 코드, xml 등 방식을 지원하는데 이게 가능한 이유가 BeanDefinition이라는 추상화가 있기 때문이다. BeanDefinition은 역할(interface)가 되는 것이고, AppConfig.class, appConfig.xml, appConfig.xxx 등과 같은 것들이 구현이 되는 것이다. 결국 스프링 컨테이너는 BeanDefinition만 바라 보기 때문에 가능한 것이다. 구조를 그림으로 보면 아래와 같다. 그림 출처 김영..
스프링의 자바 코드와 XML 설정 방식
2022. 1. 14. 08:25
Spring
해당 글을 보면 AppConfig라는 자바 코드로 빈 등록을 해서 사용을 했다. 하지만 스프링은 자바 코드 뿐 아니라 xml 방식을 지원하고 있고, 커스텀 방식도 지원하고 있다. 간단하게 알아 보자. 아래 그림은 ApplicationContext의 구현체들이다. AnnotationConfigApplicationContext는 AppConfig라는 자바 코드에서 애노테이션 기반으로 빈을 등록할 때 사용 했던 구현체이다. 이번에 알아볼 내용은 xml방식으로 빈을 등록하는 방법이다. 그림 출처 김영한의 스프링 핵심 원리 - 기본편 xml 방식으로 빈 등록하기 기존 자바 코드 설정 방식 살펴 보기 아래와 같이 자바 코드로 빈을 등록한 코드이다. AnnotationConfigApplicationContext(Ap..
스프링의 BeanFactory와 ApplicationContext의 차이
2022. 1. 10. 21:59
Spring
해당 글에서 ApplicationContext는 DI 컨테이너라고 했다. 그렇다면 BeanFactory는 무엇을까? 스프링의 컨테이너의 최상위 인터페이스 보통은 ApplicationContext에서 빈을 조회하는 코드를 작성할 것이다. 그게 가능한 이유는 BeanFactory를 상속 받았기 때문이다. 즉, getBean()과 같은 것은 BeanFactory가 제공해주는 기능인 것이다. 결과 적으로 빈을 조회하고 관리하는 역할이 BeanFactory인 것이다. 그럼 ApplicationContext는 왜 사용하지? 그렇다. 그냥 BeanFactory를 사용하면 되지 왜 ApplicationContext를 사용할까? 복잡하게.. 이유는 부가 기능이 필요하기 때문이다. ApplicationContext의 구조..
스프링의 ApplicationConetxt란??
2022. 1. 10. 21:56
Spring
ApplicationContext란 서론 스프링은 객체지향의 장점을 살리기 위해 EJB시절 로드 존슨이 취미로 만들기 시작하나 3만 줄의 예제 코드부터 시작 되었다. 객체 지향의 장점이란 변화에 대응하기 쉬운 코드를 말한다. 하지만 EJB는 객체지향과는 거리가 멀고 너무 변경에 어려웠다고 하며, 이때 나온 말이 POJO라고 한다. 순수 자바로 돌아가서 객체지향적 개발을 하자는 취지의 용어이다. 본론 ApplicationContext는 스프링의 DI 컨테이너이다. 변경에 용이하기 위해 DI 컨테이너에서 의존 객체를 주입 해주기 위해 여러 객체들을 관리하는 상자라고 생각하면 된다. 인터페이스이다. 순수 자바로 DI 컨테이너와 스프링의 DI 컨테이너 아래는 순수 자바로 DI 컨테이너를 만든 코드이다. 간단한 ..