spring系列之 回调函数的使用

本文通过具体示例解析了Spring框架中回调函数的应用原理及其优势。利用回调机制,开发者能够灵活地扩展业务逻辑,而不必关心底层实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring使用了大量的回调函数,如HibernateCallBack,打开你的eclipse,ctrl+shift+t,再输入*CallBack,你可以看到有多少地方在使用回调函数,下面分析一下大牛们为什么频繁使用这个CallBack函数。
废话少说,先来个例子说事儿。

package com.lixuehui.callbacktest; public interface MySession { public Object createMyQuery(); } package com.lixuehui.callbacktest; public class MySessionImpl implements MySession{ public Object createMyQuery(){ return "Hello,World!"; } } package com.lixuehui.callbacktest; public interface MyHibernateCallBack { Object doInHibernate(MySession target); } package com.lixuehui.callbacktest; abstract class MyTemplete{ protected MySession createSession(){ return new MySessionImpl();// 模拟创建一个session } protected Object execute(MyHibernateCallBack callback){ MySession mySession = createSession(); // 模拟创建一个session Object object = callback.doInHibernate(mySession); return object; } } class TempClass implements MyHibernateCallBack { public Object doInHibernate(MySession session) { return session.createMyQuery(); } } public class Test extends MyTemplete{ public static void main(String[] args) { Object object = new Test().execute(new MyHibernateCallBack(){ //这处new这个接口,创建一个匿名内部类,相当于new了一个实现MyHibernateCallBack接口的类,然后再将这个匿 名对象传给execute方法。 public Object doInHibernate(MySession session){ return session.createMyQuery(); } }); System.out.println(object); } } //Test类相当于: public class Test extends MyTemplete { public static void main(String[] args){ TempClass temp = new TempClass(); Object object = new Test().execute(temp); System.out.println(object); } }
不过这么写灵活度比较低,doInHibernate里的如果做另外的操作的话,就要重复修改TempClass的doInHibernate方法。
看到回调的好处了么?

我觉得这个回调的好处是:
通过创建匿名类,动态实现接口,并实现接口的方法,侧重点在于接口,不在乎实现接口的类,故采用匿名类。
如果你遇到了侧重点在于接口,而不在乎类实现的情况,就可以采取这种回调方式。

Oberser,swing的事件机制,以及java里的自定义事件机制,频繁用的都是回调.
包括java里的main函数,也可以理解为回调
那想想,为什么java *** 的时候就必须走main方法中呢,可见java ***的时候内部也是回调用的main,所以才跑到main方法里.main方法扔给二次开发人员,随意施展.

回调,回调,顾名思义:"你先实现吧,实现完了回头我调你".

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值