看Spring源码中在sql操作处用回调函数觉得大为精妙,自己也写了一个demo,记录下来,以便以后可以参考。
TestCallBack.java 代码
- package per;
-
- public interface TestCallBack {
- Object doSomeThing(TestExecute executor) ;
- }
TestExecute.java 代码
- package per;
-
- public class TestExecute {
- public Object doExecute1() {
- System.out.println("in TestExecute doExecute1()");
- System.out.println(" can do sql operation1");
- return "";
- }
-
- public Object doExecute2() {
- System.out.println("in TestExecute doExecute2()");
- System.out.println(" can do sql operation2");
- return "";
- }
-
- }
TestTemplate.java 代码
- package per;
-
- public class TestTemplate {
-
- public Object execute(TestCallBack action) {
- try {
- System.out.println("in TestTemplate execute()");
- System.out.println(" can create sql connection");
- TestExecute executor = new TestExecute();
- action.doSomeThing(executor);
- return "";
- } finally {
- System.out.println("in TestTemplate finally");
- System.out.println(" can close sql connection");
- }
- }
-
- public Object doThing1() {
- System.out.println("in TestTemplate doThing1()");
- Object ob = execute(new TestCallBack() {
- public Object doSomeThing(TestExecute executor) {
- System.out.println("in TestTemplate doThing()'s callback method");
- executor.doExecute1();
- return "";
- }
- });
- return ob;
- }
-
- public Object doThing2() {
- System.out.println("in TestTemplate doThing2()");
- Object ob = execute(new TestCallBack() {
- public Object doSomeThing(TestExecute executor) {
- System.out.println("in TestTemplate doThing()'s callback method");
- executor.doExecute2();
- return "";
- }
- });
- return ob;
- }
- }
TestRun.java 代码
- package per;
-
- public class TestRun {
-
- public static void main(String[] args) {
- new TestTemplate().doThing1();
- new TestTemplate().doThing2();
- }
-
- }
输出结果为:
- in TestTemplate doThing1()
- in TestTemplate execute()
- can create sql connection
- in TestTemplate doThing()'s callback method
- in TestExecute doExecute1()
- can do sql operation1
- in TestTemplate finally
- can close sql connection
- in TestTemplate doThing2()
- in TestTemplate execute()
- can create sql connection
- in TestTemplate doThing()'s callback method
- in TestExecute doExecute2()
- can do sql operation2
- in TestTemplate finally
- can close sql connection
用回调函数,我们可以把创建数据库连接和数据库关闭操作单独出去,而不用在每一次数据库操作时都要先建立连接,再进行数据库操作,操作完后还要关闭连接,而且数据库操作还得放在try catch finally当中。
Excellent, Rod Johnson !
分享到:
相关推荐
这个"完整版模块_回调函数.rar"压缩包文件很可能包含了一整套关于回调函数的教程、示例代码或者实战项目,旨在帮助学习者深入理解和掌握回调函数的使用。 回调函数,简单来说,就是一个被作为参数传递给另一个函数...
关于回调函数的具体实现,我们在文档中看到了一个查找链表中特定值的函数Search_List的例子。在这个例子中,Search_List函数通过一个比较函数指针compare作为参数,允许用户自定义如何比较链表中节点的值。这样,...
本文档主要介绍了在大彩物联型串口屏上使用LUA脚本进行编程时,涉及的一些核心概念是关于回调函数的使用方法以及编程注意事项。大彩LUA脚本API中提供了一系列的回调函数,这些函数在特定事件发生时被自动调用,可以...
本资源"DLL 回调函数 + Demo示例程序,VS2017 x64"提供了在Visual Studio 2017 64位环境下关于DLL回调函数的实例,确保在Debug和Release模式下都能正常运行。 首先,我们需要理解DLL是什么。DLL是动态链接库,它是...
本文将深入探讨如何在DLL中使用回调函数,以及如何通过回调函数实现主程序与DLL之间的通信,特别是在这个例子中,DLL窗口如何反写主程序的信息。 首先,了解回调函数的基本概念。回调函数是一种将函数指针作为参数...
可能包含了具体的信号槽连接示例,而`mainwindow.ui`则是Qt Designer生成的用户界面文件,`callback.pro`和`callback.pro.user`则是项目配置文件,它们共同构成了一个关于Qt回调函数使用的实例项目。
在"CallBackFun2015-12-31"这个文件中,很可能包含了关于如何在实际项目中实现回调函数模型的示例代码、教程或者案例研究,帮助开发者更好地理解和应用这种编程模式。深入研究这些资料,可以进一步提升在嵌入式程序...
通过阅读《C回调函数+.doc》和《轻松了解C语言回调函数.doc》,你可以获取更多关于函数指针和回调函数的详细解释,包括它们的工作原理、最佳实践以及可能遇到的问题。这些文档应该会涵盖如何定义和使用函数指针,...
在给定的文件`aa.html`中,可能包含一个关于JavaScript回调函数的实际示例,比如一个按钮点击事件的处理程序,或者一个使用`setTimeout`的计时器。通过查看和分析这个文件,你可以进一步了解回调函数在实际项目中的...
在 Delphi 编程中,回调函数是一种设计模式,它允许你将函数或方法作为参数传递给另一个函数,以便在特定时刻被...以上就是关于 Delphi 回调函数的简要介绍和应用示例,希望对你在 Delphi 编程中使用回调函数有所帮助。
在VC++编程中,回调函数和线程是两个非常重要的概念,它们在多任务...以上就是关于VC++中回调函数和线程的基本介绍和示例。理解并熟练掌握这些概念和技术,将有助于你在开发高效、多任务的C++应用程序时更加得心应手。
在C语言中,指针和回调函数是两个非常重要的概念,它们在编程中扮演着核心角色,尤其是在处理复杂数据...在提供的`CppApplication_1`文件中,可能包含了更多关于C语言指针回调函数的示例代码,供读者进一步学习和实践。
七、关于回调Funciton 你可以把Callback函数看作是一种特殊的消息响应函数,一般来说我们不会自己调用这种函数, 而是有某些系统函数调用,而且不需要向后传递消息。 只要象C/C++这样支持函数指针的语言都 有回调...
首先,关于回调函数的定义,它是指当一个函数作为参数传递到另一个函数里,并在那个函数内被调用。这里的重点是函数被调用的时机和方式是由外部函数来控制,而不是由函数自身直接调用。因此,即便回调函数在同步代码...
在这个"回调函数DEMO.rar"中,我们可以期待看到一系列关于如何在DELPHI中实现和使用回调函数的例子。可能包括以下知识点: 1. **函数指针**:在DELPHI中,函数指针是一种类型,它能够存储函数的地址,从而使我们...
总结来说,"test回调函数_窗体间传值"是一个关于在多窗体应用程序中使用回调函数进行数据传输的示例。通过定义委托、创建事件以及在窗体之间订阅和触发事件,我们可以实现在不同时刻和不同对象之间有效地共享和更新...
以下是一些关于JavaScript回调函数的关键点: 1. **回调函数定义**:回调函数是一个作为参数传递给其他函数的函数,这个参数通常是一个函数引用。当外部函数执行完毕或满足特定条件时,它会调用这个传递进来的函数...
回调函数是编程中的一种常见设计模式,特别是在处理异步操作时。回调函数允许我们将一个函数作为参数传递给另一个函数,以便在某个特定条件满足或异步操作完成后由被调用的函数执行。这种方式使得我们能够编写更加...
回调函数在编程中是一种设计模式,它允许我们将一个函数作为参数传递给另一个函数,以便在特定事件发生或操作完成后调用。回调函数的概念是异步编程的基础,尤其是在那些需要等待某些操作完成(如网络请求、定时任务...