知识大全 Spring笔记和小结(二)
Posted 属性
篇首语:不要在乎别人的眼光,这样我们会生不如死。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring笔记和小结(二)相关的知识,希望对你有一定的参考价值。
Spring笔记和小结(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这一节主要简单介绍了依赖注入的思想 强调了依赖注入是Spring框架的一种核心模式下面简单的说明了这种依赖注入的情况 客户端使用到了另一个我们称为service的类 客户端有自己的属性用来接受这个service 这个service被包装成一个接口 因此客户端是看不到service的具体实现的 但是这个并不完全是松耦合的 我们仍然要自己创建service 在依赖注入的思想里 一种第三方的控制器或装配器用来创建一个客户端和一个service 然后set一个service的引用来满足依赖注入的要求
其实我们并不一定需要一个轻量级容器来使用依赖注入的模式 我们只需要三步就可以使用依赖注入模式来完成模块的解耦
将这个service类包装成一个接口
给客户端添加一个属性 做为这个service接口的引用
使用一个第三方框架或自己编写的代码来开发这个service并设置该属性
下面我们来看如何改写第一节里的范例代码
Example ArrayListRentABike java (renamed from RentABike java)
import java util *; public class ArrayListRentABike implements RentABike private String storeName; final List bikes = new ArrayList( ); public ArrayListRentABike( ) initBikes( ); public ArrayListRentABike(String storeName) this storeName = storeName; initBikes( ); public void initBikes( ) bikes add(new Bike( Shimano Roadmaster Fair )); bikes add(new Bike( Cannondale F XTR Excellent )); bikes add(new Bike( Trek Fair )); public String toString( ) return RentABike: + storeName; public List getBikes( ) return bikes; public Bike getBike(String serialNo) Iterator iter = bikes iterator( ); while(iter hasNext( )) Bike bike = (Bike)iter next( ); if(serialNo equals(bike getSerialNo( ))) return bike; return null;
Example RentABike java import java util *;interface RentABike List getBikes( ); Bike getBike(String serialNo);
大家看到了 RentABike由原来的具体类改成了一个接口 而具体实现类是由ArrayListRentABike来完成的 实现类里的操作和方法和第一节里的原RentABike是一模一样的
再来看看客户端的代码
Example CommandLineView java import java util *; public class CommandLineView private RentABike rentaBike;//接口的引用 public CommandLineView( ) //set接口 public void setRentaBike(RentABike rentaBike) this rentaBike = rentaBike; public RentABike getRentaBike( ) return this rentaBike; public void printAllBikes( ) System out println(rentaBike toString( )); Iterator iter = rentaBike getBikes( ) iterator( ); while(iter hasNext( )) Bike bike = (Bike)iter next( ); System out println(bike toString( )); 大家应该注意到了吧 这里客户端有一个属性放置RentABike接口的引用
最后 我们有一个控制器或装配器来创建所有的对象 并设置它们的属性
Example RentABikeAssembler java
public class RentABikeAssembler public static final void main(String[] args) //创建一个客户端对象 CommandLineView clv = new CommandLineView( ); //装配器给出了接口的具体实现 所谓面向接口的编程 RentABike rentaBike = new ArrayListRentABike( Bruce s Bikes ); //设置客户端对象的属性 将接口通过构造方法的模式 注入 clv setRentaBike(rentaBike); //调用客户端对象的内部方法 clv printAllBikes( );
实际上 以上操作就完成了三个步骤的依赖注入模式 我们运行程序 可以得到和第一节同样的结果 C:\\RentABikeApp\\out>java RentABikeAssembler
RentABike: Bruce s Bikes Bike : manufacturer Shimano : model Roadmaster : frame : serialNo : weight : status Fair
Bike : manufacturer Cannondale : model F XTR : frame : serialNo : weight : status Excellent
Bike : manufacturer Trek : model : frame : serialNo : weight : status Fair
大家现在看到了一个不用特定容器而实现的简单的依赖注入 通过一个装配器来完成注入操作 其实最终这个装配器会用Spring框架来取代 Spring会为我们创建对象和设置属性
下面是J EE应用程序使用service locator来管理其依赖 service locator是J EE核心设计模式之一 它经常被用在命名和服务定位上
cha138/Article/program/Java/ky/201311/29021相关参考
Spring笔记和小结(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Spring笔记和小结(四) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Spring的IoC学习笔记之BeanFactoryPostProcessor
Spring的IoC学习笔记之BeanFactoryPostProcessor 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,
知识大全 Spring Integration学习笔记(一)
SpringIntegration学习笔记(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Spring2提供的remote包学习笔记 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Sp
知识大全 Spring2 提供的remote包学习笔记[3]
Spring2提供的remote包学习笔记[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Spring2 提供的remote包学习笔记[2]
Spring2提供的remote包学习笔记[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Spring2 提供的remote包学习笔记[1]
Spring2提供的remote包学习笔记[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SpringSecurity学习总结二 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前一篇文章
一、试验目的 通过试验进一步摸索出在当地具有适应性、丰产性、抗逆性的优良品种,为大面积推广提供科学依据。 二、供试品种及基本情况 1、对照(ck)路单8号;2、中禾606;3、中禾8号;4、桂单