Generics를 사용하면 여러 개별적인 데이터 타입들을 아우르는 공통 기능을 손쉽게 만들 수 있다. 그 중에서 잘 사용되진 않지만 static 메소드에 파라미터의 타입을 통해 리턴 타입을 처리할 수 있는 generic method를 사용하면 객체가 아닌 메소드 수준에서 generics를 손쉽게 적용할 수 있다.
이를 활용하여 casting 없이 지정한 타입을 통해 바로 Spring Bean 객체를 얻어오는 유틸리티 클래스를 만들 수 있다.
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class ApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
synchronized (this) {
if (ApplicationContextHolder.applicationContext == null) {
ApplicationContextHolder.applicationContext = applicationContext;
}
}
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
public static <T> T getBean(String qualifier, Class<T> clazz) {
return applicationContext.getBean(qualifier, clazz);
}
}
'소소한 팁' 카테고리의 다른 글
Flutter(dart) https SSL 인증서 오류 (proxy, self-signed 인증서) (0) | 2022.05.11 |
---|---|
JetBrains IDE Terminal에서 vi 명령 모드(escape) 이동이 안되는 경우 설정 방법 (0) | 2021.05.26 |
Go 언어에서 프로세스 실행 타임아웃(timeout) 지정하기 (0) | 2021.02.08 |
IntelliJ IDEA에서 maven이 반영되지 않을 때... (0) | 2020.12.03 |
JSON to Go struct (0) | 2020.11.30 |