프로젝트를 제작하면서, 기존에 인X런에서 배웠던 내용들을 다시 리마인드하는 작업을 하고 있다. 이거 굉장히 좋은 학습 방법인 것 같다. 아주 착착 감긴다. 어떤 느낌이냐면, 흩어진 지식들을 연결하는 느낌이다. 하드 코딩으로 필요한 기능을 추추추추추추추가 하며 무슨 내용인지도 모르고 '그냥 기능만 잘 동작하면 되지' 라는 마인드로 개발을 진행했었다. 이 어노테이션(@)이 왜 쓰이고, 무엇 때문에 쓰이고 어느 부분에선 왜 이런 어노테이션이 쓰이는지 그 이유를 알 수 있는 공부 방법이라고 생각한다.
그래서 뿔뿔이 흩어져있는 지식들을 연결하기 위한 정리들을 시작하는 중이다.
그 첫 번째는 ApplicationContext이다. 스프링을 한 번이라도 접해봤다면 ApplicatioContext를 들어는 봤을 것이다. 이 부분이 어디에 나오냐면 본격적으로 기존 자바로 되어있는 코드를 본격적으로 스프링으로 리팩토링 하기 위해서 나오는 개념이다.
ApplicationContext : 스프링 컨테이너이다. 기존에는 직접 객체를 생성하고 의존성을 주입했지만, 스프링 컨테이너를 통해서 객체를 생성하고 의존성을 주입한다.
@Configuration : 설정(구성) 정보로 사용하기 위한 스프링 컨테이너 어노테이션
@Bean : 스프링 컨테이너에 등록된 객체 = 스프링 빈, 메서드에 붙은 이름을 그대로 사용하지만 이름에 중복이 있으면 안되고 유일해야 한다.
* 스프링 컨테이너의 생성
// 스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext는 아래의 사진과 같이 인터페이스다. 따라서, new AnnotationConfigApplicationContext(AppConfig.class); 부분이 인터페이스의 구현체이다.
따라서, 이후에 스프링 컨테이너 즉, 스프링 빈 저장소에 @Bean 어노테이션을 붙인 모든 메서드가 등록이 된다. 다음 포스팅은 스프링 빈 조회 관련한 여러가지 테스트 코드를 작성해서 실제로 빈이 저장이 되는지 알아보자!
'Programming > Spring' 카테고리의 다른 글
[Spring] BeanDefinition (0) | 2022.02.07 |
---|---|
[Spring] 스프링 빈 조회 (0) | 2022.02.07 |
[스프링의 정석] HTTP 요청과 응답 (0) | 2021.10.28 |
[스프링의 정석] 클라이언트와 서버 (0) | 2021.10.27 |
[스프링의 정석] HTTP 요청과 응답 (0) | 2021.10.27 |