인프런 - 스프링부트 개념 정리(이론) - 정리

13강 - 애플리케이션 컨텍스트란 무엇인가요?

달팽이포뇨 2023. 4. 5. 17:22

Inflearn 최주호 강사님의 스프링부트 개념정리(이론) 강의를 듣고 정리한 내용입니다.

 

톰캣이 실행되면 web.xml 동작 -> 디스패처서블릿(프론트컨트롤러+리쿼스트 서블릿) 동작 - 컴포넌트 스캔(src 내부의 모든 파일을 어노테이션 기반으로 스캔해서 필요한 것들을 메모리에 띄운다.(객체를 ApplicationContext에 등록) (@Controller, @RestController, @Configuration, @Repository, @Service, @Component 등 이미 스프링이 정해놓은 것들 & 커스텀해서 만들 수도 있음) & 메모리에 띄워진 것을 각각 처리할 곳으로 보냄

 

web.xml에서 디스패처 서블릿으로 넘어갈 때, ContextLoaderListener가 먼저 실행됨. - DB 커넥션 관리 등 공통적으로 처리해야되는 것들(root-context.xml에 정의되어있음)

 

ApplicationContext는 싱글톤으로 관리 - 어디에서 접근하든 동일한 객체라는 것을 보장

2가지 종류: root-applicationContext(최상단에서 관리 - Service에 접근, Repository에 접근)와 servlet-applicationContext(웹과 관련된 어노테이션 관리 - Controller, ViewResolver, HandlerMaping 등)

 

- static으로 선언된 메서드: main 메서드가 실행되기 전부터 메모리에 떠있어야함. - 자원 하나를 공유해서 사용

- java 파일: 객체가 생성되었다가 사라짐.

 

필요한 객체를 BeanFactory에 등록할수도 있음. - @Bean을 붙여서 메모리에 띄운다. - 필요할 때 DI하여 사용한다. Bean Factory에 로드되는 객체들은 미리 로드되지 않고 필요할 때 호출하여 로드하기 때문에 lazy-loading이 된다는 점이다.