springmvc在启动工程的时候就访问数据库,加载一些共同的数据
在网上找到一个类似的问题,稍做修改
解决方案:给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在启动工程的时候就访问数据库,加载一些共同的数据相关推荐
- 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的 ...
- 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案
[spring boot]启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案 导入的一个外部的spring boot项目, ...
- 启动outlook时报错:mapi无法加载信息服务msncon.dll
今天这个Office2010 outlook搞的让人蛋疼,老是说启动outlook时报错:mapi无法加载信息服务msncon.dll. 百度了一下,如下解决方案: 安装路径为D:\NEW Windo ...
- ros中web端通过 ajax 访问 nginx 加载静态 pgm 地图显示在canvas画布中
ros中web端通过 ajax 访问 nginx 加载静态 pgm 地图显示在canvas画布中 //mapName:地图名称 | robotfloor:楼层if(mapName.length ==0 ...
- 怎么设置uboot从u盘启动linux,rt5350使用uboot从u盘启动linux成功含从u盘加载镜像与rootfs...
<rt5350使用uboot从u盘启动linux成功含从u盘加载镜像与rootfs>由会员分享,可在线阅读,更多相关<rt5350使用uboot从u盘启动linux成功含从u盘加载镜 ...
- Paging3、Room使用,1、从本地Room数据库加载 2、直接网络获取数据加载 3、网络访问数据到Room数据库再加载 4、封装使用
目录 1.从本地Room数据库加载数据 viewmodel fragment中使用 页面 数据库相关 2.直接网络获取数据加载 3.网络访问数据到Room数据库再加载数据 自定义RemoteMedia ...
- spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法
spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法 导入的一个外部的spring boot项目,运行启动类,忽然提示找不到或者无法加载 ...
- SpringMVC是如何消灭web.xml后还能加载到DispatchServlet的流程
SpringMVC能做到不需要web.xml是利用了Servlet3.0的新特性 涉及到的Servlet 3.0新特性 1.ServletContext 对象的功能进行了加强,支持在运行时动态部署 S ...
- selenium中启动firefox浏览器时设置代理、加载配置文件、加载某个插件以及firefox没有安装在默认路径下的代码写法
selenium 中启动firefox浏览器的六种方式,所用的是java 1.如果浏览器没有安装在默认路径下,则用 System.setProperty("Webdriver.firefox ...
最新文章
- 遇事不决,量子力学:谷歌量子计算模拟化学反应登上Science封面
- 2017GAITC丨尖峰对话:AI的第三次寒冬会不会到来?
- linux apache fcgi,编译安装apache2.2对应的mod_proxy_fcgi.so模块步骤,因为使用apache--phpfpm 需要这个...
- Spring Cloud Feign - 内部实现细节
- spring mvc 中对静态资源的访问配置
- JAVA项目怎么不是蓝色_解决IDEA创建maven项目时pom.xml没有变蓝的问题
- 工业以太网交换机可以家用吗?
- SVN系列操作(一)
- AC_Dream 1216 G - Beautiful People
- 计算机设计大赛国奖作品_4. 界面设计
- oracle 中查询当前用户可以看到的表名、表对应的所有字段
- 配置SQL Server 2008 R2 Reporting Services
- 1一10到时的英文单词_哈尔滨一山羊皮,叫雪地皮衣!刮风下雪不冻身,10年免洗不过时...
- RESTful风格编程
- Linux下安装PHP扩展 pdo_sqlsrv
- 瞬变抑制二极管的选型
- 银行会计凭证粗略整理
- 解决问题:Something's wrong--perhaps a missing \item. \end{thebibliography}
- 跑跑卡丁车组队竞速赛得分制度问题
- Permissions 0777 for ‘/home/***/.ssh/id_rsa‘ are too open.