原文: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. 微信开发之自定义菜单--weixin-java-tools

    一.前言 平时在开发微信的过程中,肯定会设计到微信的相关菜单的使用,这次就和大家介绍下如何使用weixin-java-tools来管理菜单 二.自定义菜单分类 1.click:点击推事件用户点击cli ...

  2. C# 7 新特性-2

    在之前的C# 7 新特性博客中,我们谈到了Tuples,Record Type和Pattern Matching.这些都是C#新特性中最可能出现的.在本博客中,我们会提到更多的一些特性,虽然这些特性不 ...

  3. 13:在O(1)时间删除单链表节点

    题目:给定单项链表的头指针和一个节点指针.定义一个函数在O(1)时间删除该节点. 解析: 删除单向链表中的一个节点,常规做法是必须找到待删除节点的前一个节点才干实现.而这样做的时间复杂度是O(n).无 ...

  4. [转载]Ubuntu 14.04中root 密码忘记解决方法

      Ubuntu 14.04中root 密码忘记解决方法 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 或者直接运行sudo ...

  5. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令

    3.6. 集群管理命令 3.6.1. RAC的启动与关闭 oracle rac默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsc ...

  6. windows内核编程--头文件包括的奇葩的问题

    先给解决的方法:假设您觉得您的头文件包括木有问题,请用WDK的build命令编译试试,非常有可能是由于您用了VS 2010 + EASY SYS 环境的问题 使用VS 2010 + EASY SYS ...

  7. selenuim-webdriver注解之@FindBy、@FindBys、@FindAll的区别

    selenium-webdriver中获取页面元素的方式有很多,使用注解获取页面元素是其中一种途径, 方式有3种:@FindBy.@FindBys.@FindAll.下文对3中类型的区别和使用场景进行 ...

  8. Crontab命令--Linux

    Crontab命令--定时任务   命令格式 Example:  

  9. jQuery 创建html

    jQuery 创建html

  10. rap 实现分页效果

    1.官网 http://rapapi.org/org/index.do 2.账号(1) react_native_developer 3.结构 4.查看接口 5.访问接口 6.数据格式