spring源码解析三

spring源码解析三

ID:12884977

大小:32.65 KB

页数:16页

时间:2018-07-19

spring源码解析三_第1页
spring源码解析三_第2页
spring源码解析三_第3页
spring源码解析三_第4页
spring源码解析三_第5页
资源描述:

《spring源码解析三》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、下面我们看看SpringJDBC相关的实现, 在Spring中,JdbcTemplate是经常被使用的类来帮助用户程序操作数据库,在JdbcTemplate为用户程序提供了许多便利的数据库操作方法,比如查询,更新等,而且在Spring中,有许多类似JdbcTemplate的模板,比如HibernateTemplate等等–看来这是Rod.Johnson的惯用手法,一般而言这种Template中都是通过回调函数CallBack类的使用来完成功能的,客户需要在回调接口中实现自己需要的定制行为,比如使用客户想要用的SQL语句等。不过往往Spring通过这种回调

2、函数的实现已经为我们提供了许多现成的方法供客户使用。一般来说回调函数的用法采用匿名类的方式来实现,比如:  如转载请注明,转载自:关注Java[http://www.gbsou.com]本文链接: Spring源代码分析(三):SpringJDBCJava代码 JdbcTemplate = new JdbcTemplate(datasource);  jdbcTemplate.execute(new CallBack(){              public CallbackInterfacedoInAction(){                

3、 ……                 //用户定义的代码或者说Spring替我们实现的代码               }  }  在模板中嵌入的是需要客户化的代码,由Spring来作或者需要客户程序亲自动手完成。下面让我们具体看看在JdbcTemplate中的代码是怎样完成使命的,我们举JdbcTemplate.execute()为例,这个方法是在JdbcTemplate中被其他方法调用的基本方法之一,客户程序往往用这个方法来执行基本的SQL语句:  Java代码 public Object execute(ConnectionCallback ac

4、tion) throws DataAccessException {      //这里得到数据库联接       Connection con = DataSourceUtils.getConnection(getDataSource());      try {          Connection conToUse = con;          //有些特殊的数据库,需要我们使用特别的方法取得datasource           if (this.nativeJdbcExtractor != null) {              // 

5、Extract native JDBC Connection, castable to OracleConnection or the like.               conToUse = this.nativeJdbcExtractor.getNativeConnection(con);          }          else {              // Create close-suppressing Connection proxy, also preparing returned Statements.         

6、      conToUse = createConnectionProxy(con);          }      //这里调用的是传递进来的匿名类的方法,也就是用户程序需要实现CallBack接口的地方。           return action.doInConnection(conToUse);      }      catch (SQLException ex) {          //如果捕捉到数据库异常,把数据库联接释放,同时抛出一个经过Spring转换过的Spring数据库异常,           //我们知道,Spring

7、做了一个有意义的工作是把这些数据库异常统一到自己的异常体系里了。           DataSourceUtils.releaseConnection(con, getDataSource());          con = null;          throw getExceptionTranslator().translate("ConnectionCallback", getSql(action), ex);      }      finally {          //最后不管怎样都会把数据库连接释放           DataSo

8、urceUtils.releaseConnection(con, getData

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。