|
lic 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;
}
}
下面是一个汇编程序。以粗体表示的代码就是依赖注入。汇编程序实例化了服务和客户,然后通过设置rentaBike属性来解决依赖性。 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( );
}
}
当然,Spring最终将担任汇编程序的角色。如果把服务包装在一个接口中,就能够把任何接口实现注入容器中。
依赖注入使您可以编码生产依赖性和测试依赖性。例如,本例创建了一个存根对象,从而可以更轻松地测试视图。
您已经看到了RentaBike的Hibernate实现和数组表版本。我不想在完整的Hibernate实现上运行所有的用户接口测试。相反,我使用数组表简单地实现了接口。
依赖注入使您可以获得一个生产版本(使用HibRentaBike)、一个开发版本(使用一个ArrayListRentaBike列表)和一个测试版本(使用一个mock对象)。使用Java编程时,我使用依赖注入把这些mock放到难于到达的地方中。
4. 反向控制简化了JDBC
JDBC应用程序麻烦、冗长且乏味。一个好的抽象层会有很大帮助。Spring允许您使用查询定制一个默认的JDBC方法和匿名内部类,以便减少大量的繁重工作。下面给出了一个简单的JDBC例子: JdbcTemplate template = new JdbcTemplate(dataSource);
final List names =上一页 [1] [2] [3] [4] [5] [6] 下一页
|