java项目启动加载数据_依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?...

我的尝试:

1、继承HttpServlet,在web.xml中配置servlet的1,项目启动时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,在所有的bean初始化之后会调用其中的方法onApplicationEvent,代码如下:

@Component

public class InitSysServlet implements ApplicationListener {

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。

随机推荐

JavaScript 变量声明提前

中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...

[转]shell脚本打印日志方法

该文章转自:http://blog.csdn.net/wylfengyujiancheng/article/details/50019299 ----------------------------- ...

Jdk1.8+Eclipse+MySql+Tomcat开发Java应用的环境搭建

Java学习开发的入门教程,方便大家在学习java开发过程中掌握最基本的环境搭建 有视频,有真相 http://www.chuanke.com/1340360-164338.html jdk是操作系统 ...

html5 canvas 旋转扩大

...

c扩展调用php的函数(调用实现php函数的c函数)

上一次是写的c扩展调用c的标准函数,但是只能调用头文件中申明的函数,今天来说下c扩展调用实现php函数的c函数,比方说,c扩展要用到php中ip2long这个函数,但是c不可能去php中调用,肯定是去 ...

BootStrap导航栏的使用

默认的导航栏 创建一个默认的导航栏的步骤如下: 向 标签添加 class .navbar..navbar-default. 向上面的元素添加 role="naviga ...

深入理解计算机系统(4.2)------逻辑设计和硬件控制语言HCL

上一篇博客我们简单介绍了Y86指令集体系,而这篇博客我们将介绍指令集体系的逻辑设计和硬件控制语言HCL,为后面去实现Y86打下基础. 在硬件设计中,用电子电路来计算对位进行运算的函数,以及在各种存储器 ...

Exp2 后门原理与实践 20164320 王浩

一.实践基本内容 1.实践目标 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启动 (3)使用MSF meterpreter(或其他 ...

Linux学习笔记7

执行脚本篇章 r w x 读  写 执行 4 2 1 如果要启动tomcat 服务器 即执行 startup.sh脚本文件 1> #chmod 444 startup.sh 增加文本读权限 -r ...

[转]PID控制算法原理

PID控制算法是工业界使用极其广泛的一个负反馈算法,相信这个算法在做系统软件时也有用武之处,这里摘录了知乎上的一篇文章,后面学习更多后自己总结一篇 以下为原文: PID控制应该算是应用非常广泛的控制算 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值