-
2021.08.03 기록장TIL 2021. 8. 2. 22:43
ToDo
- 알고리즘 문제
- 책 읽기
- 토비의 스프링
Done
- 알고리즘 문제
- 책 읽기
- 토비의 스프링
Weekly goal
- 책 읽기
- 토비 스프링 코딩
토비의 스프링
60p.
ApplicationContext 인터페이스를 바르게 구현했다면 어떤 클래스도 ioc컨테이너가 될 수 있다.
컨테이너는 하나의 애플리케이션에 여러 개 존재할 수 있으니.
ApplicationContext구현 클래스는 여러 개가 있는데 간단하게만 소개하면
StaticApplicationContext : 실전에서는 쓸 일이 없을 것이다. 뭐 애초에 컨텍스트를 만들 일이 잘 없지만.
BeanDefinition을 활용하는 가장 기본적 컨텍스트임, 코드를 통해 메타정보를 설정함
GenericApplicationContext : 가장 일반적인 컨텍스트 구현체, xml파일을 reader를 통해 읽어서 등록할 수 있다.
설정 정보 Definition는 추상적인 설정 정보임 xml도 될 수 있고, 어노테이션 소스코드도 될 수 있다.
리더로 정보를 읽고 refresh로 초기화해준다.
GenericXmlApplicationContext : 얘는 reader 필요 없이 선언과 동시에 아규먼트로 xml경로를 넣어주면 됨 JUnit테스트 시에 생성되어서 사용됨. 그때 xml동 지정해서 사용할 수 있다. @ContextConfiguartion(locations = "~~/~~. xml")
xml을 사용하는 루트 컨텍스트를 만들 때만 사용된다. 자식용으로는 못씀
WebApplocationContext : ioc기능 + 웹에서 필요한 기능을 가지고 있다. 얘는 인터페이스이므로 XmlWeb~~,AnnotaionConfigWeb~~ 등의 구현체를 쓰면 됨.
우리가 main으로 기본 java를 실행시키는 것처럼 누군가는 context를 처음에 실행시켜줘야 한다. 웹서버 환경에서는 DispatcherServlet이 해주는데 역할이 애플리케이션 컨텍스트 생성하고 설정 메타정보로 초기화해주고, 클라이언트로 부터 들어오는 요청마다 적절한 빈을 찾아서 이를 실행시켜줌
67p.
IoC컨테이너 계층구조
애플리케이션 컨텍스트는 계층 구조를 가질 수 있다.
기본적으로 spring은 2개의 계층구조를 가짐.
계층 구조의 특정은 부모에 정의한 bean정보를 자식일 쓸 수 있다는 것이다. 근데 자식이 더 우선순위를 가진다.
자식이 자신에게 없는 bean정보를 쓸라 그러면 부모에게서 찾는다. 형제나 자식에게는 묻지 않음.
계층구조의 이점은 공통된 설정을 가져갈 수 있다는 것이다. 또 상위에서 정의한 Bean을 자식에서 재정의할 수도 있다.
근데 AOP는 컨텍스트 단위라서 자식이 정의한 Bean에게는 전이가 안된다.
GenericXml은 루트 애플리케이션 컨텍스트에만 사용할 수 있으므로 자식은 리더를 사용함
'TIL' 카테고리의 다른 글
2021.08.05 기록장 (0) 2021.08.04 2021.08.04 기록장 (0) 2021.08.03 2021.08.01~02 기록장 (0) 2021.07.31 2021.07.31 기록장 (0) 2021.07.30 2021.07.30 기록장 (0) 2021.07.29