`
explore
  • 浏览: 80954 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring-模板方法模式及Callback

    博客分类:
  • J2EE
阅读更多

  Spring对JDBC的抽象和对Hibernate的集成,都采用了一种理念或者处理方式,那就是模板方法模式与相应的Callback接口相结合。

 

 采用模板方法模式是为了以一种统一而集中的方式来处理资源的获取和释放,以JdbcTempalte为例,如下:

 

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是抽象类,不能够独立使用,我们每次进行数据访问的时候都要给出一个相应的子类实现,这样肯定不方便,所以就引入了回调。

public interface StatementCallback{
      Object doWithStatement(Statement stmt);
}

  

 

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);
             }
       }

       ...//其它方法定义
}

 

使用如下:

 

JdbcTemplate jdbcTemplate=...;
final String sql=...;
StatementCallback callback=new StatementCallback(){
      public Object=doWithStatement(Statement stmt){
             return ...;
      }
}

jdbcTemplate.execute(callback);

 

 

分享到:
评论

相关推荐

    59丨模板模式(下):模板模式与Callback回调函数有何区别和联系?1

    模板模式的主要特点在于其结构固定,定义了一个操作流程,并在关键点提供了抽象方法或钩子,由子类去实现这些方法以定制特定的行为。这种方式有助于保持代码结构清晰,降低耦合度,同时也便于扩展。在框架开发中,...

    spring-retry:spring 重试模板示例

    RetryTemplate 提供了模板方法模式,使得我们能够轻松地在需要重试的地方注入并调用。 ```java @Autowired private RetryTemplate retryTemplate; public void doSomething() { retryTemplate.execute(context ->...

    Spring源代码解析(三):Spring_JDBC.doc

    JdbcTemplate的核心在于其模板方法的设计模式,它将不变的数据库操作流程(如连接获取、异常处理)与可变的用户特定操作(如SQL执行)分离。这样,用户只需关注自己的业务逻辑,而无需关心底层的数据库管理细节,...

    Spring源代码解析3:SpringJDBC[归纳].pdf

    `JdbcTemplate`遵循模板方法设计模式,通过回调函数(Callback)机制,允许用户在特定的接口中实现自定义的行为。例如,`JdbcTemplate`提供了一个`ConnectionCallback`接口,用户可以实现这个接口的`doInConnection...

    Spring JdbcTemplate api

    ### Spring JdbcTemplate API:数据库操作的模板模式 #### 概述 在Spring框架中,`JdbcTemplate`是一个用于简化JDBC编程的工具类,它采用了模板模式来分离数据库访问中的不变和可变部分,提供了一种更加健壮且易于...

    Spring+JMS+消息处理

    该模板类负责创建和管理JMS会话、连接及事务,并提供了多个方法用于发送消息或接收消息。 - **`JmsTemplate102`**:遵循JMS 1.0.2规范。 - **`JmsTemplate101`**:遵循JMS 1.1规范。 - **Message Creator(消息...

    Spring的DAO

    Spring的DAO设计模式主要体现在模板(Template)和回调(Callback)两个概念上。 模板类,如`JdbcTemplate`,负责处理数据访问流程中的通用部分,包括事务管理、资源的打开和关闭,以及异常的处理。这些模板类通常...

    苏宁B7开发转正考题(JAVA)-消费者研发中心2018

    8. **Ajax事件**:`ajaxComplete(callback)`、`ajaxSuccess(callback)`和`ajaxSend(callback)`是Ajax的事件,而`$.post(url)`是jQuery中的一个Ajax请求方法。 9. **MVC模式优点**:MVC模式增强了应用程序的可维护性...

    mongodb基础使用教程

    本文将介绍MongoDB的基本使用方法,包括环境搭建、登录安全配置以及如何在Spring Boot项目中集成MongoDB集群。 ### MongoDB基础环境搭建 搭建MongoDB环境的第一步是下载最新版本的安装包。目前,MongoDB社区版的...

    程序员英语手册

    - **定义**:在编程中指非具体存在的概念,如抽象类、抽象方法等,用于提供一个通用的模板或骨架,但不可实例化。 - **应用场景**:面向对象编程中定义接口或规范时使用。 **3. Abstract Base Class (ABC) 抽象基类...

    compass-reference.pdf

    模板和回调机制提供了额外的灵活性,允许开发者定义自己的数据处理逻辑,比如自定义索引创建流程或查询优化策略。 ### 配置 #### Programmatic Configuration 通过编程方式配置Compass,开发者可以直接控制每个...

Global site tag (gtag.js) - Google Analytics