Spring - lookup-method使用示例

一、初始逻辑

    来看下面的示例,具体看注释。

/**
 * 假设这是一个表示可以向目标发起连接的类
 */
public class ConnectionExample {
	public void execConnection() {
		System.out.println("ConnectionExample:连接到谷歌!");
	}
}
/**
 * 这是一个管理连接的类
 */
public class ConnManager {
	/**
	 * 介绍:通过调用这个方法,可以获取一个连接对象,业务逻辑如方法体 说明:假设这是一个旧系统中遗留的或者第三方插件中默认的业务逻辑,
	 * 整个类和方法你都不能更改或者更改太麻烦
	 */
	public ConnectionExample createConnection() {
		return new ConnectionExample();
	}
}
<!-- 初始使用,我们引入Spring后的配置 -->
<bean id="connManager" class="com.rc.sp.lookup.ConnManager"/>
public class Run {
	/**
	 * 通过ConnManager的createConnection()方法可以获得初始的Connection,
	 * 调用其execConnection()方法发起初始的连接请求,原有流程完毕
	 */
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		ConnManager manager = (ConnManager) context.getBean("connManager");
		manager.createConnection().execConnection();
	}
}
    运行结果:执行Run中的main()方法,控制台输出:ConnectionExample:连接到谷歌!


二、应用拓展

    现在,假设需要对Connection做一个拓展,希望可以连接到的目标是自定义的新目标,通过ConnectionExample的createConnection()获取的当然也是拓展的Connection对象。拓展很容易,怎样把这个拓展的Connection在调用createConnection()时取代默认业务逻辑产生的Connection对并返回,才是lookup-method的重点。

/**
 * 针对默认的Connection拓展
 */
public class ConnectionExtends extends ConnectionExample {
	@Override
	public void execConnection() {
		System.out.println("ConnectionExtends:连接到百度!");
	}
}
<!-- spring配置 -->
<bean id="connectionExtends" class="com.rc.sp.lookup.ConnectionExtends"/>
<bean id="connManager" class="com.rc.sp.lookup.ConnManager">
	<!-- 忽略createConnection()方法中的具体业务逻辑,直接返回自定义的bean的对象,但是该bean必须与忽略逻辑的方法返回值执行不冲突 -->
	<lookup-method name="createConnection" bean="connectionExtends"/>
</bean>
    运行结果:再次执行Run中的main()方法,控制台输出:ConnectionExtends:连接到百度!



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值