Backend · Spring ·[Spring] Spring Context란?2023년 2월 5일 · 2분 읽기Spring Context 란? #Bean의 확장 버전으로 Spring이 Bean을 다루기 좀 더 쉽도록 기능들이 추가된 공간이다.단순히 Bean을 다루는 것 이외에도 추가적인 기능을 수행한다.ROOT-CONTEXT (공통 부분) #모든 서블릿이 공유할 수 있는 Bean들이 모인 공간.DB와 관련된 Repository, Service 등이 있음SERLVET-CONTEXT (개별 부분) #서블릿 각자의 Bean들이 모인 공간.웹, 앱 마다 한 개씩 존재하므로 웹 앱 그자체를 의미하기도 함이 Context 내에서의 Bean들은 서로 공유될 수 없음MVC의 Controller가 이에 해당된다.Context의 구조 #1. Application Context #Spring Context 기능의 중심인 최상위 인터페이스거의 Spring Context는 얘를 구현하며, 기능에 따라 앞에 “~~ApplicationContext"라고 붙음2. AbstractApplication ContextApplication Context가 기능의 중심적인 역할을 수행한다면 이 Context는 Application Context를 구현한 추상 클래스로, 내부에 정의된 특수한 Bean들을 등록할 수 있음. #3. GenericApplication Context #이름부터 제너릭이듯, Context로서의 기능을 거의 다 갖고있다.주로 수동으로 직접 Bean을 등록할 때 사용한다.XmlBeanDefinitionReader를 사용하여 xml 파일을 읽어와야 한다.등록 과정이 좀 번거로움4. GenericXmlApplicationContext #Bean을 배울 때 보통 가장 먼저 사용하는 인터페이스.AbstractApplication Context 을 확장한 인터페이스로 Context등록 과정이 간편화되어 있음1번과 달리 xml 파일을 읽어오는 과정이 내부에 있으며, 다양한 루트로 설정 파일을 불러올 수 있다.5. ClassPathXmlApplicationContext #GenericXmlApplicationContext과 비슷하지만, 클래스 경로로 Context를 불러오는 데 특화되어 있음6. FileSystemXmlApplicationContext #말 그대로 클래스 경로가 아닌 실제 파일 경로로 불러온다.쓸데없이 길기도 하고 그냥 classPath를 사용하는 것을 권장 (정신건강에 좋음)Web Application용 Context 종류 #1. SerlvetContext #Java 자체의 Context를 말함Spring도 Java로 만들어졌으므로, 모든 Spring Context는 ServletContext라고 할 수 있음2. WebApplicationContext #웹 애플리케이션에 특화된 Context앞서 설명한 ROOT, Serlvet Context로 사용됨3. ConfigurationWebApplicationContext #WebApplicationContext를 설정하는 데 쓰이는 ContextWebContext를 설정해야할 때엔 Configurable 클래스로 바꿔서 설정함Advertisement 관련 글[Spring] Spring Security, JWT, 인증, 인가Backend · SpringBackend & Web 경력직(3~5) 면접 정리CS · InterviewWeb 신입 면접 정리CS · Interview[Spring] JPA (Hibernate) - Error (creating bean with name 'entityManagerFactory')Backend · Spring← [Spring] Spring Security, JWT, 인증, 인가