spring模板模式与callback
来源:互联网 发布:炫踪网络上市计划启动 编辑:程序博客网 时间:2024/06/04 19:12
Spring-模板方法模式及Callback
Spring对JDBC的抽象和对Hibernate的集成,都采用了一种理念或者处理方式,那就是模板方法模式与相应的Callback接口相结合。
采用模板方法模式是为了以一种统一而集中的方式来处理资源的获取和释放,以JdbcTempalte为例,如下:
Java代码
- public abstract class JdbcTemplate {
- public final Object execute(String sql){
- Connection con=null;
- Statement stmt=null;
- try
- {
- con=getConnection();
- stmt=con.createStatement();
- Object retValue=executeWithStatement(stmt,sql);
- return retValue;
- }
- catch(SQLException e){
- ...
- }
- finally
- {
- closeStatement(stmt);
- releaseConnection(con);
- }
- }
- protected abstract Object executeWithStatement(Statement stmt, String sql);
- }
这样处理之后,JDBC代码的使用得到了规范,连接释放等问题也得到了统一的管理。
但是,JdbcTemplate是抽象类,不能够独立使用,我们每次进行数据访问的时候都要给出一个相应的子类实现,这样肯定不方便,所以就引入了回调。
Java代码
- public interface StatementCallback{
- Object doWithStatement(Statement stmt);
- }
Java代码
- public class JdbcTemplate {
- public final Object execute(StatementCallback callback){
- Connection con=null;
- Statement stmt=null;
- try
- {
- con=getConnection();
- stmt=con.createStatement();
- Object retValue=callback.doWithStatement(stmt);
- return retValue;
- }
- catch(SQLException e){
- ...
- }
- finally
- {
- closeStatement(stmt);
- releaseConnection(con);
- }
- }
- ...//其它方法定义
- }
使用如下:
Java代码
- JdbcTemplate jdbcTemplate=...;
- final String sql=...;
- StatementCallback callback=new StatementCallback(){
- public Object=doWithStatement(Statement stmt){
- return ...;
- }
- }
- jdbcTemplate.execute(callback);
0 0
- spring模板模式与callback
- 模板方法模式与CallBack
- Spring的template与callback模式
- Spring HibernateTemplate与Callback
- Spring中的Callback模式和Template模式
- Spring中的Template和Callback模式
- Spring 中 CallBack 模式的使用
- spring-模板设计模式
- 也谈谈Spring中的Template和Callback模式
- 《Spring中的模板设计模式》
- 模板模式与原型模式
- Callback 回调模式
- Spring对JDBC封装时使用的一种CallBack来参数化一个操作的模式
- 模板方法与外观模式
- XSL模板与匹配模式
- 模板与分离编译模式
- Surface与SurfaceHolder.Callback
- 模板模式在Spring 中的应用
- 2.sed语法与常用选项
- HIHO #1079 : 离散化(线段树+离散化)
- 数据结构实验之二叉树五:层序遍历
- Android4.3 蓝牙BLE初步
- Openwrt下设置端口映射 DMZ 访问控制
- spring模板模式与callback
- Shell 字符串处理、获取文件名和后缀名
- vector<bool>效率问题的原因和替代方法
- 二叉排序树
- hdu2108Shape of HDU 计算几何
- IOS NSInvocation应用与理解
- Qt的5种常用布局搭建
- Lua继承的实现(__index元方法)
- Java反射简介