关于spring数据源管理几点不清楚的地方
2012-05-24 15:51
204 查看
请教下spring配置数据源无法获取实例的问题,先传代码:
/* 本地数据源配置 */
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/album_manager" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
获取连接类:
public class DBUtil {
static Logger log=Logger.getLogger(DBUtil.class);
static DataSource dataSource = null;
/**
* 获取系统的数据源
*
* @return DataSource
*/
public static DataSource getDataSource() {
try {
if(dataSource==null){
dataSource = (DataSource) ContextHelper.getContext().getBean("dataSource");
}
} catch (Exception e) {
log.error("获取数据源出错,请检查Spring数据源配置!");
}
return dataSource;
}
/**
* 获取数据库连接
*
* @return Connection
*/
public static Connection getConn() {
Connection conn = null;
try {
conn = getDataSource().getConnection();
} catch (SQLException e) {
log.error("通过数据源获取数据库连接发生异常!");
e.printStackTrace();
}
return conn;
}
public static void closeConn(Connection conn){
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
目前存在的问题是每次对数据库操作我都是:
Connection conn=DBUtil.getConn();
...数据库操作
DBUtil.closeConn(conn);
多次操作后就无法获取conn的连接实例了,程序也不报错,只是到:conn = getDataSource().getConnection();停止了。
发现问题了,判断语句中未关闭连接。尴尬了~
/* 本地数据源配置 */
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/album_manager" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
获取连接类:
public class DBUtil {
static Logger log=Logger.getLogger(DBUtil.class);
static DataSource dataSource = null;
/**
* 获取系统的数据源
*
* @return DataSource
*/
public static DataSource getDataSource() {
try {
if(dataSource==null){
dataSource = (DataSource) ContextHelper.getContext().getBean("dataSource");
}
} catch (Exception e) {
log.error("获取数据源出错,请检查Spring数据源配置!");
}
return dataSource;
}
/**
* 获取数据库连接
*
* @return Connection
*/
public static Connection getConn() {
Connection conn = null;
try {
conn = getDataSource().getConnection();
} catch (SQLException e) {
log.error("通过数据源获取数据库连接发生异常!");
e.printStackTrace();
}
return conn;
}
public static void closeConn(Connection conn){
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
目前存在的问题是每次对数据库操作我都是:
Connection conn=DBUtil.getConn();
...数据库操作
DBUtil.closeConn(conn);
多次操作后就无法获取conn的连接实例了,程序也不报错,只是到:conn = getDataSource().getConnection();停止了。
发现问题了,判断语句中未关闭连接。尴尬了~
相关文章推荐
- 关于spring3.0 后的 事务注解管理指定数据源问题
- spring-boot-2.0.3不一样系列之番外篇 - 自定义session管理,绝对有值得你看的地方
- 关于spring boot mybatis 多数据源的多种方法原理概述
- 关于jdbc编程的几点需要注意的地方
- Spring 多数据源 @Transactional 注解事务管理
- 关于spring 与Hibernate 结合使用的事务管理
- 关于非Spring管理下的Bean通过反射在newInstance()下的自动注入问题
- 关于LSCMS(链接工作室内容管理系统)开发的几点感想
- spring整合hibernate关于session的管理
- 项目中关于变更管理的几点心得
- 关于省客服集中全业务系统IT项目管理的几点分析!
- 关于项目团队管理的几点思考
- 六、Spring管理数据源
- Spring和hibernate多个数据源的事务管理
- spring数据源的注入、JdbcTemplate管理、编程式的事务管理DataSourceTransactionManager
- [置顶]关于Spring 事务管理传播属性的配置及作用-嵌套事务
- OA中总结:s:select,关于使用modelDriven,项目分层,@Transactional,jspf,各个层上配置注解交给spring管理的方法,简单的OGNL表达式写法
- Spring使用proxool连接池 管理数据源
- 关于信息管理系统需求调研的几点建议
- Spring多数据源管理源码分析