依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?
原文:https://blog.csdn.net/u012345283/article/details/39558537
原文:https://blog.csdn.net/wandrong/article/details/44782627
我的尝试:
1、继承HttpServlet,在web.xml中配置servlet的<load-on-startup>1</load-on-startup>,项目启动时globalParaService被注入了,但是跟踪到init方法里面,globalParaService为null。(失败)
public class InitSysServlet extends HttpServlet {
private SysGlobalParaServiceI globalParaService;
@Autowired
public void setGlobalParaService(SysGlobalParaServiceI globalParaService) {
this.globalParaService = globalParaService;
}
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
SysGlobalPara codeRule = globalParaService.getCodeRule();
if (null != codeRule) {
SystemConfig.IS_SET_WIZADED = "true".equals(codeRule.getSysValue());
} else {
SystemConfig.IS_SET_WIZADED = false;
}
}
}
然后,我试着手动创建globalParaService,代码调整为
public class InitSysServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
SysGlobalParaServiceI globalParaService = new SysGlobalParaServiceImpl();
SysGlobalPara codeRule = globalParaService.getCodeRule();
if (null != codeRule) {
SystemConfig.IS_SET_WIZADED = "true".equals(codeRule.getSysValue());
} else {
SystemConfig.IS_SET_WIZADED = false;
}
}
}
然而,SysGlobalParaServiceImpl里面依赖的其他由Spring注入的对象为null。
搞不定了,百度到以上两篇文章,根据上面文章进行尝试都成功了。
2、直接在init方法中获取Spring的bean (成功)
首先在Spring配置文件中配置SysGlobalParaServiceImpl类对应的bean,然后在代码中获取,最终代码如下:
public class InitSysServlet extends HttpServlet {
private SysGlobalParaServiceI globalParaService;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
globalParaService = (SysGlobalParaServiceI) wac.getBean("gpservice");
SysGlobalPara codeRule = globalParaService.getCodeRule();
if (null != codeRule) {
SystemConfig.IS_SET_WIZADED = "true".equals(codeRule.getSysValue());
} else {
SystemConfig.IS_SET_WIZADED = false;
}
}
}
以下两种则与servlet无关,而是继承spring提供的接口。
3、实现Spring的接口InitializingBean,则实现类在被Sping初始化之后,会调用其中的afterPropertiesSet方法,代码如下:
@Component
public class InitSysServlet implements InitializingBean { private SysGlobalParaServiceI globalParaService; @Autowired
public void setGlobalParaService(SysGlobalParaServiceI globalParaService) {
this.globalParaService = globalParaService;
} @Override
public void afterPropertiesSet() throws Exception {
SysGlobalPara codeRule = globalParaService.getCodeRule();
if (null != codeRule) {
SystemConfig.IS_SET_WIZADED = "true".equals(codeRule.getSysValue());
} else {
SystemConfig.IS_SET_WIZADED = false;
}
} }
4、实现Spring的接口ApplicationListener<ContextRefreshedEvent>,在所有的bean初始化之后会调用其中的方法onApplicationEvent,代码如下:
@Component
public class InitSysServlet implements ApplicationListener<ContextRefreshedEvent> { private SysGlobalParaServiceI globalParaService; @Autowired
public void setGlobalParaService(SysGlobalParaServiceI globalParaService) {
this.globalParaService = globalParaService;
} @Override
public void onApplicationEvent(ContextRefreshedEvent arg0) {
SysGlobalPara codeRule = globalParaService.getCodeRule();
if (null != codeRule) {
SystemConfig.IS_SET_WIZADED = "true".equals(codeRule.getSysValue());
} else {
SystemConfig.IS_SET_WIZADED = false;
}
} }
最后,我采用的是第4中,实现Spring的接口ApplicationListener<ContextRefreshedEvent>。
依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?的更多相关文章
- EasyUI Datagrid 分页的情况下实现点击表头的小三角图标对数据库中所有数据重新排序
说明一下: 当点击 datagrid 表头某一列的小三角图标时,easyui 本身是有排序的,但是在当我们对 datagrid 进行了分页的情况下,点击排序只是对当前页的数据进行排序,而需求需要我对数 ...
- SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
其他信息: V5.7.4.4 Can't find the System.Data.SQLite.dll more info : 混合模式程序集是针对"v2.0.50727"版的运 ...
- VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
看到一个kinect大牛编写的一个水果忍者的体感游戏版本,让我为自己一直以来只用现有的网页游戏来模拟kinect体感游戏控制感到惭愧,没办法,我还是菜鸟.学习一段后自己模仿星际大战这个游戏,自己写了一 ...
- 【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...
开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合 ...
- <VS2010>混合模式程序集是针对“v2.0”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0时,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有 ...
- C#连接Sqlite 出现:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。的解决方案
C#连接Sqlite 出现: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集.的解决方案 C#连接sqlite数据库代码 ...
- c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
“System.IO.FileLoadException”类型的未经处理的异常在 XXX.dll 中发生 其他信息: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的 ...
- web.xml中配置启动时加载的servlet,load-on-starup
web.xml中配置启动时加载的servlet,load-on-starup 使用servlet来初始化配置文件数据: 在servlet的配置当中,<load-on-startup>1&l ...
- 使用Spring Boot来加速Java web项目的开发
我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用 ...
随机推荐
- SQL Server 跨数据库事务
模拟三个库(同一个实例中),分别是DB1.DB2.DB3 整个事务的业务如下: 1.DB1写入表数据 2.DB2写入表数据 3.DB3调用存储过程写入表数据 4.每次写入表数据间隔模拟抛异常流程, ...
- Node.js 调用 restful webservice
如何构建一个restful web service参考原来的文章 http://www.cnblogs.com/ericnie/p/5212748.html 直接用原来的项目编译好像有问题,此处耗费1 ...
- es6的模块化;js的模块化
现在感觉Java.Python.Js都是越来越工程花,模块化.懂得每个模块的功能和使用场景,你很快的就能搭起一个功能齐备的应用.至于应用的性能.稳定性等,还在于你对模块的理解深度以及组合的成熟度,就看 ...
- IE8 XSS Filter Bypass
漏洞说明:IE8是微软新推出的一款浏览器,其对CSS2.1的完整支持,HTML5的支持,内置开发工具等等.IE8在浏览器安全性上有非常大的改进,内置了一款无法卸载的Xss Filter,对非持久型跨站 ...
- Discuz! 6.x/7.x 全局变量防御绕过漏洞
受影响产品: Discuz! 6.x/7.x 漏洞描述: 由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏 ...
- JS中map、forEach、filter、reduce等Array新增方法的区别
数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Array.isArray(elemen ...
- solr6.6 导入 文本(txt/json/xml/csv)文件
参照:solr6.6 导入 pdf文件 重点就是三个配置文件 1.建立的data-config.xml 内容如下: <dataConfig> <dataSource name=&qu ...
- 怎样在caffe中添加layer以及caffe中triplet loss layer的实现
关于triplet loss的原理.目标函数和梯度推导在上一篇博客中已经讲过了.详细见:triplet loss原理以及梯度推导.这篇博文主要是讲caffe下实现triplet loss.编程菜鸟.假 ...
- 【重点突破】—— Vue2.0 transition 动画Demo实践填坑
前言:vue1.0版本和2.0版本的过渡系统改变是很大的,具体请详看文档介绍.本文转载自郭锦荣的博客,一共列举了四种transition的使用实践,分别是css过渡.css动画.javascript钩 ...
- [转] Google 开源 iOS 应用测试工具:EarlGrey
Google 开源 iOS 应用测试工具:EarlGrey oschina 发布于: 2016年02月18日 (3评) 分享到: 收藏 +53 3月19日,深圳源创会火热报名中,go>&g ...