EnvironmentBean.java 1.46 KB
/**
 * 
 */
package com.bjivt.system;

/**
 * @author Administrator
 * @系统环境组件
 */
import org.springframework.context.support.*;

@SuppressWarnings("unchecked")
public final class EnvironmentBean {
	
	private static EnvironmentBean instance=null;
	private AbstractApplicationContext context=null;  
	
	private EnvironmentBean() {
		initContext();
	}
	
	private void initContext() {
		try {
			initContextProxy();
		}
		catch(Exception err) {
			err.printStackTrace();
			closeContext();
			initContextProxy();
		}
	}
	
	private void initContextProxy() {
		String[] beans={"dispatcher-servlet.xml"};
		context=new ClassPathXmlApplicationContext(beans);
		context.registerShutdownHook();
	}
	
	public static EnvironmentBean getInstance() {
		if(instance==null) instance=new EnvironmentBean();
		return instance;
	}
	
	public <T> T getBeanByBeanClass(Class<T> cls) throws Exception {
		try {
			if(context==null) initContext();
			T obj=context.getBean(cls.getSimpleName(),cls);
			return obj;
		}
		catch(Exception err) {
			err.printStackTrace();
			throw new Exception("没有与类相符的Bean被找到!");
		}
	}
	
	public <T> T getBeanByBeanName(String beanName) throws Exception {
		try {
			if(context==null) initContext();
			T obj=(T)context.getBean(beanName);
			return obj;
		}
		catch(Exception err) {
			err.printStackTrace();
			throw new Exception("没有与名称相符的Bean被找到!");
		}
	}
	
	public void closeContext() {
		context.close();
		context=null;
	}
}