- 애플리케이션 컨텍스트와 스프링에서 빈의 처리 과정, 그리고 싱글톤에 대해 학습.
![]() | ![]() |
스프링(Spring)에는 빈(Bean)의 생성과 관계설정과 같은 제어를 담당하는 IoC(Inversion of Control) 컨테이너인 빈 팩토리(Bean Factory)가 존재함.빈 팩토리를 상속받아서 확장된 형태인 애플리케이션 컨텍스트(Application Context)를 주로 사용함.Ex) @Configuration과 같은 에노테이션이 대표적인 IoC의 설정 정보임.
클라이언트에서 특정 빈을 요청하면 애플리케이션 컨텍스트는 아래와 같은 과정을 거쳐 빈을 반환함.
Application Context는 @Configuration이 붙은 클래스들을 설정 클래스로 등록해놓고, @Bean이 붙은 메소드명으로 빈 목록을 생성함.
클라이언트가 해당 빈을 요청.
Application Context는 빈 목록에서 요청한 빈이 있는지 찾고 설정 클래스로부터 빈 생성을 요청한 뒤 생성된 빈을 반환함.
Ex) @Bean 어노테이션이 붙은 메소드가 반환하는 객체가 있다면, Spring은 Reflection을 d이용해서 그 클래스를 불러오고, 그 클래스를 기반으로 객체를 생성함.↓↓Java로 기본적인 싱글톤 패턴을 구현할 땐 아래와 같은 단점들이 발생함.
그래서 스프링은 직접 싱글톤 형태의 오브젝트를 만들고 관리하는 기능을 제공.
static 메소드나 private 생성자 등을 사용하지 않아서 객체지향적으로 개발을 할 수 있음.
테스트 하기가 편리함.
기본적으로 싱글톤이 멀티쓰레드 환경에서 서비스 형태의 객체로 사용되기 위해서는 내부에 상태정보를 갖지 않는 무상태(Stateless) 방식으로 만들어져야함.
기본적으로 싱글톤은 멀티쓰레드 환경에서 서비스 형태의 객체로 사용되기 위해서는 내부에 상태 정보를 갖지 않는 무상태(Stateless) 방식으로 만들어져야함.
main() 메소드와 같이 프로그램이 시작되는 지점에서 사용할 오브젝트를 결정 -> 결정한 오브젝트를 생성 -> 만들어진 오브젝트에 있는 메서드를 호출 -> 그 오브젝트 메서드 안에서 다음에 사용할 것을 결정하고 호출하는 식의 작업이 반복됨. IoC의 프로그램 흐름
스프링은 Ioc를 모든 기능의 기초가 되는 기반기술로 삼고 있으며, Ioc를 극한까지 적용하고 있는 프레임워크.


