Spring - lookup-method使用示例

一、初始逻辑

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

/**
 * 假设这是一个表示可以向目标发起连接的类
 */
public class ConnectionExample {
	public void execConnection() {
		System.out.println("ConnectionExample:连接到谷歌!");
	}
}
/**
 * 这是一个管理连接的类
 */
public class ConnManager {
	/**
	 * 介绍:通过调用这个方法,可以获取一个连接对象,业务逻辑如方法体 说明:假设这是一个旧系统中遗留的或者第三方插件中默认的业务逻辑,
	 * 整个类和方法你都不能更改或者更改太麻烦
	 */
	public ConnectionExample createConnection() {
		return new ConnectionExample();
	}
}

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:连接到百度!");
	}
}



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



你可能感兴趣的:(Spring,Spring,lookup-method)