@Component("springUtils")
@Lazy(false)
public final class SpringUtils implements ApplicationContextAware, DisposableBean , BeanFactoryPostProcessor {
/** applicationContext */
private static ApplicationContext applicationContext;
/**
* 不可实例化
*/
private SpringUtils() {
}
public void setApplicationContext(ApplicationContext applicationContext) {
if(null == SpringUtils.applicationContext){
SpringUtils.applicationContext = applicationContext;
}
}
public void destroy() throws Exception {
if(null != applicationContext){
applicationContext = null;
}
}
/**
* 获取applicationContext
*
* @return applicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取实例
*
* @param name
* Bean名称
* @return 实例
*/
public static Object getBean(String name) {
//Assert.hasText(name);
return applicationContext.getBean(name);
}
/**
* 获取实例
*
* @param name
* Bean名称
* @param type
* Bean类型
* @return 实例
*/
public static <T> T getBean(String name, Class<T> type) {
Assert.hasText(name);
Assert.notNull(type);
return applicationContext.getBean(name, type);
}
public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0)
throws BeansException {
// TODO Auto-generated method stub
}
}
代码说明:
@Lazy(false) 延时加载,被调用时再加载到Spring容器中
ApplicationContextAware 此接口提供获取bean对象方法
DisposableBean 此接口提供销毁bean方法