1.web.xml引入
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.hxy.sys.servelt.InitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
2.InitServlet类
import com.hxy.base.utils.SpringContextUtils;
import com.hxy.sys.dao.CodeDao;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 类的功能描述.
* 继承HttpServlet,重写Init方法,实现加载servlet时,做一些操作
*/
public class InitServlet extends HttpServlet{
private static CodeDao codeDao = SpringContextUtils.getBean(CodeDao.class);
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
ApplicationContext context1 = WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
SystemApi aaabbbb = context1.getBean(SystemApi.class);
String webRoot = config.getServletContext().getContextPath(); config.getServletContext().setAttribute("webRoot", webRoot);//Web根目录 config.getServletContext().setAttribute("resRoot", webRoot+"/statics");//资态资源根目录 //缓存全部数据字典 CodeCache(); } /** * 缓存全部数据字典 */ public void CodeCache(){ ........................ }}
3.工具类
import org.apache.commons.lang3.Validate;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* 类SpringContextUtils的功能描述:
* Spring Context 工具类
*/
@Component
public class SpringContextUtils implements ApplicationContextAware {
public static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtils.applicationContext = applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
/**
* 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/
public static <T> T getBean(Class<T> requiredType) {
assertContextInjected();
return applicationContext.getBean(requiredType);
}
/**
* 检查ApplicationContext不为空.
*/
private static void assertContextInjected() {
Validate.validState(applicationContext != null, "applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.");
}
public static <T> T getBean(String name, Class<T> requiredType) {
return applicationContext.getBean(name, requiredType);
}
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
public static boolean isSingleton(String name) {
return applicationContext.isSingleton(name);
}
public static Class<? extends Object> getType(String name) {
return applicationContext.getType(name);
}
}
4.
加载SpringContextUtils到容器
<bean class="com.bbbb.aaa.base.utils.SpringContextUtil" lazy-init="false"/>