您的位置:首页>软件开发>软件架构>

Spring笔记和小结(4)

[ 来源:Rifoo Technology | 更新日期:2007-7-15 20:16:15 | 评论 0 条 | 我要投稿 ]
本篇主要介绍使用Spring来进行依赖注入,以及对以前代码的改进。

如果你机器上没有安装Spring,需要先到官方网站(http://www.springframework.org)上去下载,将Spring的lib放到warWEB-INFlib下,让应用能够找到它们。

将现有应用程序转移到一个设计良好的POJO的基于Spring的应用其实很简单,只需要以下几个步骤:

1 利用依赖注入的思想对现有代码进行重构。model对象看作bean,service看作aspect。一般我们只有bean,而没有使用到service。

2 去掉代码中实例化对象和设置依赖(即通过set方法设置)的那部分代码。

3 创建一个配置文件来描述bean和aspect。

4 通过Spring来访问我们的代码。


下面我们就按照上面的步骤来改进我们的程序:


先看看管理我们bean和aspect的配置文件,目前这里没有用到aspect。

Example 1-9. RentABike-context.xml 字串7

"Bruce’s Bikes"


这里的,后面的class是具体类,实际情况可能需要完整的包名+类名的形式,这里使用的默认包。而bean前面的id用来唯一标示这个bean。
下面的"Bruce’s Bikes"是给这个bean设置属性,这里就是所谓依赖注入的思想。属性名和值可以被动态的set到相应的bean中去。下面这个commandLineView也一样,只不过表示它有个属性是rentaBike bean的一个引用。大家如果不明白,后面会讲到具体的实现。

接着来看看这个改进后的装配器:

Example 1-10. RentABikeAssembler.java
import org.springframework.context.support.ClassPathXmlApplicationContext;public class RentABikeAssembler { public static final void main(String[] args) { //使用这一句来读取上面定义的配置文件 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("RentABikeApp-context.xml"); //完成依赖注入 CommandLineView clv = (CommandLineView)ctx.getBean("commandLineView"); clv.printAllBikes( ); }} 字串4


它使用ClassPathXmlApplicationContext("RentABikeApp-context.xml")来读取配置文件,Spring其实有很多方法来读取配置文件,后面会陆续介绍的。
ctx.getBean("commandLineView");这一句先到配置文件中去找id为commandLineView的bean,这个时候找到了其具体类是CommandLineView,并将属性和值注入到这个对象中。

我们回顾一下改动前的代码:
public class RentABikeAssembler { public static final void main(String[] args) { CommandLineView clv = new CommandLineView( );//1 RentABike rentaBike = new ArrayListRentABike("Bruce’s Bikes");//2 clv.setRentaBike(rentaBike);//3 clv.printAllBikes( ); }}


大家可以发现上面我注释的3句是被替换掉了,这些操作是由Spring框架来完成了依赖注入。
依赖注入的好处就是可以通过修改配置文件来给类动态加载相关的属性和引用,而不用修改代码。

Tags:
责任编辑:
您的评论
用户名: 新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为