/**
* spring工厂调用辅助类
*/
public class ApplicationContextHelper implements ApplicationContextAware {
private static DefaultListableBeanFactory springFactory;
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
context = applicationContext;
if (applicationContext instanceof AbstractRefreshableApplicationContext) {
AbstractRefreshableApplicationContext springContext =
(AbstractRefreshableApplicationContext) applicationContext;
springFactory = (DefaultListableBeanFactory) springContext.getBeanFactory();
} else if (applicationContext instanceof GenericApplicationContext) {
GenericApplicationContext springContext = (GenericApplicationContext) applicationContext;
springFactory = springContext.getDefaultListableBeanFactory();
}
}
public static DefaultListableBeanFactory getSpringFactory() {
return springFactory;
}
public static ApplicationContext getContext() {
return context;
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String beanName) {
assertApplicationContext();
return (T) context.getBean(beanName);
}
public static <T> T getBean(Class<T> requiredType) {
assertApplicationContext();
return context.getBean(requiredType);
}
private static void assertApplicationContext() {
if (ApplicationContextHelper.context== null) {
throw new RuntimeException("属性 ApplicationContext context没有成功注入");
}
}
}