용어 정리
- 빈: 스프링이 직접 그 생성과 제어를 담당하는 오브젝트
- 빈 팩토리: 빈 등록/생성/조회/반환 등 빈 관리 기능 담당... 이를 확장한 것이 애플리케이션 컨텍스트
- 애플리케이션 컨텍스트: 빈 팩토리 + 스프링의 애플리케이션 지원 기능 포함
- 설정정보/설정 메타정보: 애플리케이션 컨텍스트/빈 팩토리가 IoC 적용 위해 사용하는 메타정보
- IoC 컨테이너: 애플리케이션 컨텍스트/빈 팩토리의 다른 말
인상 깊은 구절
- 애플리케이션 컨텍스트는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리
- 서버환경에서 구동되어야 하기 때문에 싱글톤으로 관리
- 싱글톤 패턴의 단점인... 를 해결해줌
- 상속 불가
- 테스트 힘듦
- 생성 로직에 신경써야함
- 싱글톤 == 전역 객체
- 싱글톤으로 만들어지는 Bean들은 stateless하도록 구현하자! (Race Condition)
- 자신이 사용하는 다른 싱글톤 빈을 저장하려는 용도라면 인스턴스 변수 사용도 OK
- DI (의존 관계 주입)
- 코드에는 런타임 의존 관계 안 드러남
- 런타임 의존관계는 컨테이너나 팩토리 같은 제 3의 존재가 결정
- 레퍼런스를 외부에서 주입해줌으로써 사용
- DL (의존 관계 검색)
- 자신이 필요로 하는 의존 오브젝트를 능동적으로 찾음
- 애플리케이션의 기동시점에서 적어도 한 번은 DL방식으로 오브젝트를 가져와야함
느낀점
- XML 파트를 읽긴 했지만, 직접 구현해보진 않았다
- XML과 @Configuration을 대응시키는 것을 연습해봐야겠다
- @Configuration으로 작성하는 부분을 더 공부해야 겠다
- Spring과 SpringBoot의 차이점을 더 공부하고 기존 web.xml에 쓰던 설정이 어떻게 옮겨왔는지도 조금 더 알아볼 것
- 클라이언트 요청부터 DB 조회까지의 흐름을 설명을 못한다
- 중간에 서블릿이라는 용어가 나와 스프링이 어찌 서블릿을 활용하는지 궁금해졌다
- 아직 완벽히 이해하지 못했다
- 정리해서 블로그 포스팅을 해야겠다