Spring 初始化2次的问题
2015-11-17 00:00
561 查看
在Spring的使用中,有时初始化一些公共类,比如数据源、常量配置等,这些方法会执行两次,导致程序执行出现异常。
一个解决方法是利用Spring的事件机制,事件机制需要实现ApplicationListener监听器,只要编写一个实现类实现该接口的onApplicationEvent方法,在方法体中初始化应用需要的初始化数据,并做防二次初始化的处理。
此处是一个jedis工厂类的代码:
[b][b]获取【下载地址】[/b][/b] 【新技术】现在最流行的java后台框架组合java springmvc mybaits mysql oracle html5 后台框架源码
一个解决方法是利用Spring的事件机制,事件机制需要实现ApplicationListener监听器,只要编写一个实现类实现该接口的onApplicationEvent方法,在方法体中初始化应用需要的初始化数据,并做防二次初始化的处理。
此处是一个jedis工厂类的代码:
public class JedisFactory implements ApplicationListener<ApplicationEvent> { private static Logger logger = LogHelper.LOG_CollectDataService; private static JedisPoolConfig jedisPoolConfig; private static JedisPool jedisPool; private static boolean isStart = false; @Value("${redis.maxActive}") private String maxActive; @Value("${redis.maxIdle}") private String maxIdle; @Value("${redis.maxWait}") private String maxWait; @Value("${redis.ip}") private String host; @Value("${redis.port}") private String port; @Override public void onApplicationEvent(ApplicationEvent event) { if (!isStart) { isStart = true; try { jedisPoolConfig = new JedisPoolConfig(); // 最大连接数 jedisPoolConfig.setMaxActive(Integer.parseInt(maxActive)); // 最大空闲连接数 jedisPoolConfig.setMaxIdle(Integer.parseInt(maxIdle)); // 获取连接最大等待时间 jedisPoolConfig.setMaxWait(Integer.parseInt(maxWait)); // 设置获取连接前是否进行连接测试 jedisPoolConfig.setTestOnBorrow(true); jedisPool = new JedisPool(jedisPoolConfig, host, Integer.parseInt(port)); logger.info("JedisPool 已初始化, ", JSON.toJSONString(jedisPool)); } catch (Exception e) { logger.error("JedisPool 初始化异常", e); } } } public static Jedis getJedis() { Jedis jedis = null; try { logger.info("jedisPool = ", jedisPool.toString()); jedis = jedisPool.getResource(); return jedis; } catch (Exception e) { logger.error("获取Jedis实例异常", e); jedisPool.returnBrokenResource(jedis); return null; } } /** * 将jedis对象释放回连接池中 * * @param jedis 使用完毕的Jedis对象 * @return true 释放成功;否则返回false */ public static boolean release(Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); return true; } return false; } }
[b][b]获取【下载地址】[/b][/b] 【新技术】现在最流行的java后台框架组合java springmvc mybaits mysql oracle html5 后台框架源码
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- spring boot实战之内嵌容器tomcat配置
- 基于Spring框架的Shiro配置方法
- Spring MVC中上传文件实例
- spring aop两种配置方式
- 实例讲解Java的Spring框架中的AOP实现
- 解析Java中如何获取Spring中配置的bean
- 浅析mybatis和spring整合的实现过程