Spring - lookup-method使用示例

1、初始逻辑:首先,来看下面的示例,具体看注释。
java


/**
* 假设这是一个表示能够向目标发起链接的类
*/
publicclassConnectionExample {
publicvoidexecConnection() {
System.out.println("ConnectionExample:链接到谷歌!");
}
}


/**
* 这是一个管理链接的类
* @author Administrator
*
*/
publicclassConnManager {
/**
* 介绍:经过调用这个方法,能够获取一个链接对象,业务逻辑如方法体
* 说明:假设这是一个旧系统中遗留的或者第三方插件中默认的业务逻辑,
*       整个类和方法你都不能更改或者更改太麻烦
*/
publicConnectionExample createConnection(){
returnnewConnectionExample();
}
}
<!-- 初始使用或者咱们引入Spring后的配置 -->
<beanid="connManager"class="com.rc.sp.lookup.ConnManager"/>


publiccla***un {
/**
* 经过ConnManager的createConnection()方法能够得到初始的Connection,
*     调用其execConnection()方法发起初始的链接请求,原有流程完毕
*/
publicstaticvoidmain(String[] args) {
ApplicationContext context = newClassPathXmlApplicationContext(
"applicationContext.xml");
ConnManager manager = (ConnManager) context.getBean("connManager");
manager.createConnection().execConnection();
}
}

 运行结果:执行Run中的main()方法,控制台输出:ConnectionExample:链接到谷歌!spring


2、应用拓展:如今,假设须要对Connection作一个拓展,但愿能够链接到的目标是自定义的新目标,经过ConnectionExample的createConnection()获取的固然也是拓展的Connection对象。拓展很容易,怎样把这个拓展的Connection在调用createConnection()时取代默认业务逻辑产生的Connection对并返回,才是lookup-method的重点。app


/**
* 针对默认的Connection拓展
*/
publicclassConnectionExtends extendsConnectionExample {
@Override
publicvoidexecConnection() {
System.out.println("ConnectionExtends:链接到百度!");
}
}


<!-- spring配置 -->
<beanid="connectionExtends"class="com.rc.sp.lookup.ConnectionExtends"/>
<beanid="connManager"class="com.rc.sp.lookup.ConnManager">
<!-- 忽略createConnection()方法中的具体业务逻辑,直接返回自定义的bean的对象,
可是该bean必须与忽略逻辑的方法返回值执行不冲突 -->
<lookup-methodname="createConnection"bean="connectionExtends"/>
</bean>


运行结果:再次执行Run中的main()方法,控制台输出:ConnectionExtends:链接到百度!ide

相关文章
相关标签/搜索