본문 바로가기

SpringFramework Core - I. IoC 컨테이너

(101)
6.1.3. 기본적인 초기화/소멸 메소드들 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle-default-init-destroy-methods 스프링에 특화된 InitializingBean과 DisposableBean 콜백 인터페이스를 사용하지 않고 초기화/소멸 메소드 콜백을 만들 때는 init(), initialize(), dispose() 등과 같은 이름의 메소드들을 작성하게 될 것이다. 이상적으로는, 그런 라이프사이클 메소드들의 이름이 프로젝트 전반에 걸쳐 규범화되어 다른 개발자들로 하여금 같은 메소드 이름을 사용하게하여 일관성을 지켜야한다. 스프링 컨테이너가 모든 bean에서 초..
6.1.2. 소멸 콜백 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle-disposablebean org.springframework.beans.factory.DisposableBean 인터페이스를 구현하면 컨테이너가 소멸될 때 bean이 콜백을 받을 수 있다. DisposableBean 인터페이스는 하나의 메소드를 가진다. void destroy() throws Exception; 우리는 DisposableBean 콜백 인터페이스를 사용하지 않는 것을 권장한다. 스프링의 코드와 불필요한 결합을 맺게 되기 때문이다. 대신에, @PreDestroy 어노테이션이나 bea..
6.1.1. 초기화 콜백 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle-initializingbean org.springframework.beans.factory.InitializingBean 인터페이스는, 컨테이너로부터 필요한 프로퍼티들을 bean에 모두 세팅받은 후에 초기화 작업을 수행할 수 있도록 해준다. InitializingBean 인터페이스는 하나의 메소드를 가진다. void afterPropertiesSet() throws Exception; 우리는 InitializingBean 인터페이스를 사용하지 않는 것을 권장한다. 스프링과 불필요한 결합을 맺게되기..
6.1. 라이프사이클 콜백 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle 컨테이너가 bean의 라이프사이클을 관리하는 것과 상호작용하기 위해서는 스프링의 InitializingBean과 DisposableBean 인터페이스들을 구현하면 된다. 컨테이너는 bean이 초기화와 소멸 과정을 통해 특정 행위를 할 수 있도록, afterPropertiesSet()을 먼저 호출한 후 destroy()를 호출한다. 현대의 스프링 애플리케이션에서, JSR-250의 @PostConstruct와 @PreDestroy 어노테이션은 라이프사이클 콜백을 받기위한 가장 좋은 방법으로 평가받는다..
6. Bean의 성질(nature) 커스터마이징하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-nature 스프링 프레임워크는 bean의 성질을 커스터마이징할 수 있는 많은 인터페이스들을 제공한다. 다음과 같이 그룹화할 수 있다. 라이프사이클 콜백 AppllicationContextAware와 BeanNameAware 다른 Aware 인터페이스들
5.5.2. 커스텀 Scope 사용하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-custom-using 하나 이상의 커스텀 Scope 구현체를 생성하고 테스트하고나면 스프링 컨테이너가 이 새로운 scope를 알아보도록 해야한다. 다음 메소드는 스프링 컨테이너에 새로운 Scope를 등록하기 위한 주요 메소드이다. void registerScope(String scopeName, Scope scope); 이 메소드는 ConfigurableBeanFactory 인터페이스에 선언되어 있으며, BeanFactory의 프로퍼티를 통해 사용가능하다. 따라서 BeanFactory의 구현체이면서 ..
5.5.1. 커스텀 Scope 만들기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-custom-creating 커스텀 scope를 스프링 컨테이너로 통합하기 위해서는 이제부터 설명할 org.springframework.beans.factory.config.Scope 인터페이스를 구현해야한다. 자신만의 scope를 어떻게 구현할지에 대해서는, 스프링 프레임워크가 제공하는 Scope 구현체들과 Scope javadoc을 참고하라. 구현해야할 메소드들에 대해서 구체적으로 설명해줄 것이다. Scope 인터페이스는 scope에서 객체를 얻기위한 4가지 메소드를 가지고 있다. scope에서 그..
5.5. 커스텀 Scopes 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-custom bean의 scoping 메커니즘은 확장가능성이 있다. 나만의 scope를 만들수도 있으며 이미 존재하는 scope를 재정의할 수도 있다. 하지만 재정의는 그리 좋지 않으며, built-in된 싱글턴과 프로토타입 scope는 오버라이드 할 수 없다.