일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 스프링스터디
- 스프링컨테이너
- 인공신경망
- REST API
- 클린코드
- 임팩트커리어스터디
- mysql
- Machine Learing
- Deep Learning
- NullCheck
- valid
- requestbody
- springboot
- 스프링어노테이션
- 스프링프레임워크
- Dao
- 머신러닝
- 객체지향특징
- 개발서적
- 개발필독서
- 노마드코더
- 노개북
- JPA
- IntelliJ
- 북클럽
- til
- 북스터디
- 딥러닝
- 인텔리제이
- spring
Archives
- Today
- Total
dev.jaieve 공부기록
[Spring] 스프링 컨테이너란? 본문
스프링 컨테이너란
스프링 컨테이너를 스프링의 Bean을 생성하고 관리한다. 기본적으로 빈은 싱글통으로 생성된다. 스프링 컨테이너는 2가지 유형이 있다고 한다.
- Bean Factory
- ApplicationContext
Bean Factory
- 스프링 설정파일(@Configuration)에 등록된 Bean 객체를 생성하고 관리하는 기본적인 기능을 제공하는 IoC컨테이너이다. 하지만 실제 Bean의 생성 및 관리에는 추가적 기능이 필요해서 스프링컨테이너 두 번째 유형이자 Bean Factory를 상속받아 확장된 ApplicationContext을 주로 사용한다고 한다.
ApplicationContext란?
- 컨테이너의 기본적인 기능(Bean 생성 및 관리)뿐만 아니라 트랜잭션 관리, 메시지 기반의 다국어 처리, AOP처리 등 의존성주입(Dependency Injection, DI), 제어의 역전((Inverse of Conversino) 등을 지원한다. @Configuration이 제공해주는 IoC 및 DI 설정정보를 읽어서 Bean 생성 및 관계를 설정한다.
- Bean을 생성하고 관리하는 것은 상속하고있는 Bean Factory와 동일하지만 차이점이 있다면 Bean Factory는 Lazy Loading방식이고, ApplicationContext는 Pre-Loading 방식으로 빈을 만든다는 것이다.
Bean 생성과정 및 순서
- 프로그램이 구동되면서 ApplicationContext는 @Configuration이 붙은 클래스를 설정정보로 등록 & @Bean이 붙은 메서드의 이름을 bean목록으로 생성한다.(Pre-loading)
- (Lazy-loading)클라이언트가 해당 빈을 요청하면
- ApplicationContext는 자신의 빈 목록에서 요청된 bean이 있는 확인하고
- 있다면 설정정보클래스(@Configuration)에 빈 생성을 요청하고 생성된 빈을 return한다.
ApplicationContext의 종류
- ApplicationContext는 AbstractApplicationContext의구현체이며 구현클래스 종류는 크게 GenericXmlApplicationContext와 XmlWebApplicationContext가 있다.
(공식문서를 확인해보면 AppilcationContext 인터페이스 구현체 클래스는 훨씬 많은 것을 확인할 수 있다. 링크)
ApplicationContext context = new XmlWebApplicationContext();
// 기본설정값으로 root Context의 설정xml파일은 "/WEB-INF/applicationContext.xml"로 되어있다.
ApplicationContext context = new GenericXmlApplicationContext("xml directory");
// 별도의 설정파일 경로를 알려줘야 함. 이때 root는 src/
일반적으로 Spring MVC 환경을 제작하면 XmlWebApplicationContext가 스프링컨테이너로 자동으로 생성되되어 사용되지만, 직접 빈을 생성하여 xml설정 파일을 로딩하고 스프링을 구동할 때는 GenericXmlApplicationContext가 스프링컨테이너로 사용된다.
Reference
반응형
'Back > Springboot' 카테고리의 다른 글
[Spring] 다형성과 SOLID (0) | 2022.02.26 |
---|---|
[Spring] 스프링 stereotype 어노테이션 (0) | 2022.02.20 |
[SpringBoot] API 개발시 @RequestBody 객체 와 @Valid 어노테이션 (0) | 2021.07.24 |
[SpringBoot/Java] JSP를 하다가 JPA를 처음 접하면서 생긴 의문 - JPA의 DTO와 JSP의 DAO의 차이점 (0) | 2021.07.24 |
[Spring] 빌드 관리 도구, Maven과 Gradle이란 무엇인가? (0) | 2021.07.18 |