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페이지가 반환된다.