-
[Spring] 스프링/스프링컨테이너/스프링빈 이란?Backend/Spring 2022. 5. 9. 23:27728x90
스프링
- 스프링 DI(Dependency Injection) 컨테이너 기술
- 스프링 프레임워크
- 스프링 부트, 스프링 프레임워크 등을 모두 포함하는 스프링 생태계
자바 언어 기반의 프레임 워크로서 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이다. 객체 지향 프로그래밍의 추상화, 캡슐화, 상속, 다형성을 보장한다. 그 중 다형성은 제어의 역전, 의존 관계 주입을 통해 역할과 구현을 편리하게 다룰 수 있도록 지원한다.
스프링 컨테이너
자바 객체(Bean)의 생명 주기를 관리하며 생성된 자바 객체드레게 추가적인 기능을 제공한다. 제어흐름을 외부에서 관리할 수 있게 해주며 객체들 간의 의존관계를 런타임에 만들어준다.
종류에는 2가지가 있다.
1. BeanFactory
빈 등록, 생성, 조회 등 관리하는 역할로 AppConfig에 Bean 정의 후 getBean()을 통해 필요한 스프링 빈 객체를 찾을 수 있다. getBean() 호출된 시점에서야 해당 빈을 생성한다.
2. ApplicationContext
BeanFactory의 기능을 상속받고 부가적인 기능을 제공한다. Context 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 가동 후에는 빈을 지연없이 받는다.
Configuration Metadata
- 스프링의 ApplicationContext가 실제 만들어야할 빈 정보를 받아오는 곳
- 이를 이용해서 IoC컨테이너에 의해 관리되는 객체들을 생성하고 구성
- xml 기반 : GenericXmlApplicationContext
- java 기반 : AnnotationConfigApplicationContext
- xml보다는 java 기반으로 많이 사용
스프링 빈
Spring IoC 컨테이너가 관리하는 자바 객체이다.
spring bean을 Spring IoC 컨테이너에 등록하는 방식은 두가지가 있다.
1. ComponentScan - Annotation 사용
- 스프링이 직접 클래스를 검색해서 빈을 등록해주는 기능
- 설정 클래스에 빈을 직접 등록하지 않아도 원하는 클래스를 빈으로 등록
- stereotype annotation을 이용하여 스프링이 자동으로 등록될 빈을 찾을 수 있음
- 스프링에 다양한 stereotype의 annotation이 있는데 UML에서처럼 모든 빈을 동일시 하지 않고 용도에 맞게 분류
@Component : any component @Repository : data access @Service : service classes @Controller : spring mvc @Configuration : java config
- @Autowired : 객체 생성 시점에 스프링이 연관된 스프링 빈을 스프링 컨테이너에서 찾아서 주입(DI)
2. Bean Configuration File에 직접 bean 등록
- Annotation없이 SpringConfig에서 @Bean을 통해 등록
728x90'Backend > Spring' 카테고리의 다른 글
[Spring Boot] Spring Boot에서 Thymeleaf 사용하기 (0) 2022.08.12 [Spring Error] EmbeddedDatabase 사용 시 java.lang.RuntimeException: mysql start failed with error 해결 (0) 2022.08.05 [Spring] Logging / Logging Framework / Log Level / Logback / Log Appender (0) 2022.07.31 [Spring] AppConfig / IoC / DI (0) 2022.05.09 [Spring] SOLID (0) 2022.05.09