原文: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项目如何在启动时加载数据库中的数据?的更多相关文章

  1. EasyUI Datagrid 分页的情况下实现点击表头的小三角图标对数据库中所有数据重新排序

    说明一下: 当点击 datagrid 表头某一列的小三角图标时,easyui 本身是有排序的,但是在当我们对 datagrid 进行了分页的情况下,点击排序只是对当前页的数据进行排序,而需求需要我对数 ...

  2. SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    其他信息: V5.7.4.4 Can't find the System.Data.SQLite.dll more info : 混合模式程序集是针对"v2.0.50727"版的运 ...

  3. VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    看到一个kinect大牛编写的一个水果忍者的体感游戏版本,让我为自己一直以来只用现有的网页游戏来模拟kinect体感游戏控制感到惭愧,没办法,我还是菜鸟.学习一段后自己模仿星际大战这个游戏,自己写了一 ...

  4. 【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

    开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合 ...

  5. <VS2010>混合模式程序集是针对“v2.0”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

    在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0时,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有 ...

  6. C#连接Sqlite 出现:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。的解决方案

    C#连接Sqlite 出现: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集.的解决方案 C#连接sqlite数据库代码 ...

  7. c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    “System.IO.FileLoadException”类型的未经处理的异常在 XXX.dll 中发生 其他信息: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的 ...

  8. web.xml中配置启动时加载的servlet,load-on-starup

    web.xml中配置启动时加载的servlet,load-on-starup 使用servlet来初始化配置文件数据: 在servlet的配置当中,<load-on-startup>1&l ...

  9. 使用Spring Boot来加速Java web项目的开发

    我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用 ...

随机推荐

  1. Matlab设置字体大小

    1.  设置坐标轴上下限:axis([xmin,xmax,ymin,ymax]); 2.  设置图片大小:set(gcf,'Position',[x1,y1,dx,dy]); x1和y1是图的左下角坐 ...

  2. Chrome DevTools 代码覆盖率功能详解

    共 1812 字,读完需 3 分钟.工欲善其事必先利其器,前端周刊本周起每周会加餐 1 篇工具技巧,里面辅以动图,让大家看完就能学会,并上手使用.本文会介绍 Chrome Canary 新增的代码覆盖 ...

  3. TOleDBMSSQLConnectionProperties驱动MSSQL数据库

    TOleDBMSSQLConnectionProperties驱动MSSQL数据库 为了让MORMOT可以驱动所有版本的MSSQL,需要改用SQLOLEDB,因为所有的WINDOWS操作系统里面都提供 ...

  4. fl2440 platform总线button字符设备驱动

    驱动程序: #include "s3c_driver.h" #define DRV_DESC "S3C24XX button driver" /* Driver ...

  5. python 下载小说

    以下载官场风月小说为例: 具体代码: # coding=utf-8 import os import re from selenium import webdriver from selenium.c ...

  6. Oracle OS认证 口令文件 密码丢失处理

    Oracle OS认证 口令文件 密码丢失处理 分类: Oracle Basic Knowledge2009-10-19 14:24 5031人阅读 评论(9) 收藏 举报 oracleos数据库sq ...

  7. Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署

    一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...

  8. 支付宝支付系统繁忙,请稍后再试(ALI64)错误解决

    解决方法:将商户支付參数的seller邮箱换成与partner同样的数字串,依然无法支付请检查所给參数

  9. 60分钟搞定JAVA加解密

    从摩尔电码到小伙伴之间老师来了的暗号,加密信息无处不在.从军事到生活,加密信息的必要性也不言而喻. 今天,我们就来看看java怎么对数据进行加解密 分类 a.古典密码 -- 受限制算法:算法的保密性给 ...

  10. Selenium webdriver Java 操作IE浏览器

    V1.0版本:直接新建WebDriver使用 import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetE ...