티스토리 뷰
@ApplicationScoped
어플리케이션에서 사용되는 bean instance. 주입 시점에 공유되며 기본적으로 해당 어노테이션을 사용해 bean을 생성하면 지연(lazy) 생성된다. 즉, Client proxy를 통해 메서드가 호출될 때 초기화되며 생성된다.
@Singleton
Client proxy가 사용되지 않는다는 점 빼고는 @ApplicationScoped 와 같다. 즉, 주입 시점에 인스턴스가 생성(eager)된다.
@RequestScoped
Current request(보통 Http request)와 관련이 있는 bean instance. Spring에서 사용하는 @RequestScope 와 유사하다.
@Dependent
pseudo-scope 을 가지는 bean instance. Instance가 공유되지 않고, 주입 시점에 새로운 bean instance를 생성해 주입한다. 해당 bean을 주입받는 bean과 연관되어 생성 및 소멸이 함께 수행된다.
@SessionScoped
HttpSession 객체에 의해 지원되는 scope. quarkus-undertow extension을 사용해야만 사용이 가능하다.
그냥 보기엔 @Singleton 과 @ApplicationScoped 가 매우 유사해보이는데, 어떤걸 사용해야 할까?
상황에 따라 다르다.
일단 @Singleton 은 client proxy를 사용하지 않기 때문에 bean이 주입될 때 바로 생성(eager)된다.
하지만 @ApplicationScoped 는 주입 시점이 아닌 주입되어 메서드가 호출될 때 instance가 생성(lazy)된다.
@ApplicatinoScoped 로 주입된 bean은 client proxy에 의해 오로지 메서드가 호출될 때만 bean이 생성된다. 즉, 그 이전까지는 @ApplicationScoped bean의 Field를 읽고 쓸 수 없다. 반대로 @Singleton bean은 가능하다.
@Singleton 은 context에서 proxy를 생성하지 않고 바로 생성해 사용하는 것이기 때문에 @ApplicationScoped 보다 조금 더 성능이 좋다. 하지만 @Singleton bean은 QuarkusMock을 통한 mocking이 불가능하다.
@ApplicationScoped 는 runtime 중에 소멸되고, 재생성 될 수 있다. 주입된 proxy에 의해 현재 instance로 동작을 위임하기 때문에 기존 주입시점은 잘 동작한다.
공식문서에서 말하길 @Singleton 을 사용해야하는 좋은 이유가 없다면, 기본값(default)으로 @ApplicationScoped 사용을 추천하고 있다.
'Development > Java, Kotlin, Frameworks' 카테고리의 다른 글
JUnit5 Tag & Filtering (2) | 2022.02.17 |
---|---|
Kubernetes에서의 Spring boot Profile 설정 (0) | 2022.01.18 |
Intellij - error: invalid source release: 17 오류 (3) | 2021.10.20 |
Java Proxy 설정 가이드 (0) | 2021.09.10 |
Spring boot - access log (0) | 2021.08.21 |
- Total
- Today
- Yesterday
- HTTP
- Clean Architecture
- Kubernetes
- python
- WebFlux
- k8s
- tag
- Spring
- Algorithm
- 백준
- 로그
- docker
- boj
- Spring boot
- gradle
- 알고리즘
- 클린 아키텍처
- java
- container
- Intellij
- 하루
- hexagonal architecture
- 비동기
- Istio
- MySQL
- 일상
- 쿠버네티스
- Log
- jasync
- c++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |