Bean Singleton or Prototype
2019. 4. 18. 18:23ㆍ[정리] 기능별 개념 정리/스프링 부트
* Elasticsearch 의 RestHighLevelClient는 Thread safe 하지 않다.
* Elasticsearch 의 RestHighLevelClient는 사용하고 나면 close() 메소드를 호출해줘야 안전하다.
@Bean
public RestHighLevelClient restHighLevelClient(){
return new RestHighLevelClient(RestClient.builder(new HttpHost(host,port,"http")));
}
Bean 은 기본적으로 싱글톤이기 때문에 Thread safe 하지 못한 클래스는 등록하면 안된다.
더불어 RestHighLevelClient는 사용하고 나면 close를 해줘야하기 때문에 일반 Bean으로 적합하지 못하다.
@Bean(destroyMethod = "close")
@Scope("prototype")
public RestHighLevelClient restHighLevelClient(){
return new RestHighLevelClient(RestClient.builder(new HttpHost(host,port,"http")));
}
Scope을 지정해주지 않으면 Bean은 Singleton 으로 동작한다.
Scope을 prototype으로 지정해주면 빈이 주입될 때마다 new 한다.
destory method = close 는 default 가 close 이므로 지정해주지 않아도 된다..
참조 : https://gmlwjd9405.github.io/2018/11/10/spring-beans.html
'[정리] 기능별 개념 정리 > 스프링 부트' 카테고리의 다른 글
Spring boot's NoSQL (0) | 2019.04.21 |
---|---|
Spring boot's RestTemplate, WebClient (0) | 2019.04.21 |
스프링 부트 - Shedlock (0) | 2019.04.09 |
스프링 부트 개발환경 로컬환경 분리 (0) | 2019.04.04 |
Controller to model flow (0) | 2019.03.21 |