在网上找到一个类似的问题,稍做修改

解决方案:给web容器添加一个Listener类,在容器启动的时候执行Listener的“初始化”方法,在这个初始化方法中执行查询数据库的所有操作,然后将数据库中的信息缓存起来

问题:上面的方法很好,但问题是如何去查询数据库,由于使用了spring的IOC特性,查询数据库的service控制dao层,dao层访问数据库,而Listener类只是在系统启动的时候会执行初始化方法,但是“service”对象没有被spring管理,也就是说没有service对象访问数据库,只能使用jdbc的方式连接,这个很显然不符合MVC开发的特性。那么如何才能在启动web容器的时候利用spring的IOC特性呢?

解决方法:spring给出的解决方案——写一个类,实现InitializingBean接口,然后交由spring容器管理

public class InitDataListener implements InitializingBean, ServletContextAware {

@Resource
private AttriService attriService;

@Override
public void setServletContext(ServletContext arg0) {
List<Attri> attriLst = attriService.getAttriLst();
arg0.setAttribute("attriLst",

attriLst);

      ServletContext也是和session一样像一张表,分为属性、值

      添加属性:setAttribute(String name,Object obj);

得到值:getAttribute(String name);

删除属性:removeAttribute(String name); 

      生命周期

      ServletContext中的属性的生命周期从创建开始,到服务器关闭而结束

}

@Override
public void afterPropertiesSet() throws Exception {
// 在这个方法里面写 初始化的数据也可以。
}
}

配置文件里写上这个

<!-- spring系统启动以后,会先加载该类 -->
<bean class="你的包路径.InitDataListener">
</bean>

转载于:https://www.cnblogs.com/zhengteng/p/5381910.html

springmvc在启动工程的时候就访问数据库,加载一些共同的数据相关推荐

  1. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的 ...

  2. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案

    [spring boot]启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案 导入的一个外部的spring boot项目, ...

  3. 启动outlook时报错:mapi无法加载信息服务msncon.dll

    今天这个Office2010 outlook搞的让人蛋疼,老是说启动outlook时报错:mapi无法加载信息服务msncon.dll. 百度了一下,如下解决方案: 安装路径为D:\NEW Windo ...

  4. ros中web端通过 ajax 访问 nginx 加载静态 pgm 地图显示在canvas画布中

    ros中web端通过 ajax 访问 nginx 加载静态 pgm 地图显示在canvas画布中 //mapName:地图名称 | robotfloor:楼层if(mapName.length ==0 ...

  5. 怎么设置uboot从u盘启动linux,rt5350使用uboot从u盘启动linux成功含从u盘加载镜像与rootfs...

    <rt5350使用uboot从u盘启动linux成功含从u盘加载镜像与rootfs>由会员分享,可在线阅读,更多相关<rt5350使用uboot从u盘启动linux成功含从u盘加载镜 ...

  6. Paging3、Room使用,1、从本地Room数据库加载 2、直接网络获取数据加载 3、网络访问数据到Room数据库再加载 4、封装使用

    目录 1.从本地Room数据库加载数据 viewmodel fragment中使用 页面 数据库相关 2.直接网络获取数据加载 3.网络访问数据到Room数据库再加载数据 自定义RemoteMedia ...

  7. spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法

    spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法 导入的一个外部的spring boot项目,运行启动类,忽然提示找不到或者无法加载 ...

  8. SpringMVC是如何消灭web.xml后还能加载到DispatchServlet的流程

    SpringMVC能做到不需要web.xml是利用了Servlet3.0的新特性 涉及到的Servlet 3.0新特性 1.ServletContext 对象的功能进行了加强,支持在运行时动态部署 S ...

  9. selenium中启动firefox浏览器时设置代理、加载配置文件、加载某个插件以及firefox没有安装在默认路径下的代码写法

    selenium 中启动firefox浏览器的六种方式,所用的是java 1.如果浏览器没有安装在默认路径下,则用 System.setProperty("Webdriver.firefox ...

最新文章

  1. 遇事不决,量子力学:谷歌量子计算模拟化学反应登上Science封面
  2. 2017GAITC丨尖峰对话:AI的第三次寒冬会不会到来?
  3. linux apache fcgi,编译安装apache2.2对应的mod_proxy_fcgi.so模块步骤,因为使用apache--phpfpm 需要这个...
  4. Spring Cloud Feign - 内部实现细节
  5. spring mvc 中对静态资源的访问配置
  6. JAVA项目怎么不是蓝色_解决IDEA创建maven项目时pom.xml没有变蓝的问题
  7. 工业以太网交换机可以家用吗?
  8. SVN系列操作(一)
  9. AC_Dream 1216 G - Beautiful People
  10. 计算机设计大赛国奖作品_4. 界面设计
  11. oracle 中查询当前用户可以看到的表名、表对应的所有字段
  12. 配置SQL Server 2008 R2 Reporting Services
  13. 1一10到时的英文单词_哈尔滨一山羊皮,叫雪地皮衣!刮风下雪不冻身,10年免洗不过时...
  14. RESTful风格编程
  15. Linux下安装PHP扩展 pdo_sqlsrv
  16. 瞬变抑制二极管的选型
  17. 银行会计凭证粗略整理
  18. 解决问题:Something's wrong--perhaps a missing \item. \end{thebibliography}
  19. 跑跑卡丁车组队竞速赛得分制度问题
  20. Permissions 0777 for ‘/home/***/.ssh/id_rsa‘ are too open.

热门文章

  1. ASP.NET MVC下的四种验证编程方式[续篇]
  2. How to adjust OOM score for a process?
  3. 启动mac版docker自带的k8s
  4. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(一)
  5. webpack打包ES6降级ES5
  6. web性能优化(理论)
  7. Java基础之Collection和Map
  8. linux 安装maven
  9. 前端基础进阶(七):函数与函数式编程
  10. spark mllib推荐算法使用