[Spring] context.getBean() 사용하기
Service 구현체가 많은 경우, 각각을 다 DI 하면 확장성이 떨어져 이를 Map에 담고 Interface로 꺼내 호출하는 방식을 자주 사용하게 된다.
다음과 같은 방법을 사용하면 Service Bean을 직접 불러올 수 있어 굳이 Map에 담지 않아도 사용 가능하다. 새로운 Service가 추가될 때 컨트롤러 쪽을 전혀 수정하지 않아도 되는 방식. (Map에 담는 방식은 생성자에서 map.put 해서 담아주어야 하니까...)
```java
private final ApplicationContext context;
// + DI
```
```java
PointChangeService pointChangeService = context.getBean(partnerCode + "PointChangeService", PointChangeService.class);
```
getBean에서 빈을 못찾으면 Exception이 발생하기 때문에 GlobalExceptionHandler에서 /error/500 을 반환하게 해두었다면 알아서 500페이지가 반환된다.
'Java Stack > Spring' 카테고리의 다른 글
Spring AOP / @annotation resolve (0) | 2019.07.30 |
---|---|
Hystrix with Spring ( Circuit Breaker ) 를 사용할 때 주의해야 할 점. (0) | 2019.07.30 |
[Spring] DB 관련 : H2 설정 (0) | 2019.07.23 |
RestTemplate 사용 시 ResponseType으로 generic 타입 받기 (ParameterizedTypeReference) (1) | 2019.07.11 |
[Spring] annotation : bean constraints, validation (0) | 2019.07.11 |