JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--Spring  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
Spring: A Developer's Notebook笔记和小结(4)
作者:     文章来源:
访问次数:6次     加入时间:2007年03月30日
/**
作者:Willpower
来源:Rifoo Technology(http://www.rifoo.com)
时间:2005-12-29
备注:转载请保留以上声明
**/

本篇主要介绍使用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
<?xml version="1.0" encoding="UTF-8"?>


<beans>

  <bean id="rentaBike" class="ArrayListRentABike">
    <property name="storeName"><value>"Bruce's Bikes"</value></property>
  </bean>

  <bean id="commandLineView" class="CommandLineView">
    <property name="rentaBike"><ref bean="rentaBike"/></property>
  </bean>

</beans>


这里的<bean id="rentaBike" class="ArrayListRentABike">,后面的class是具体类,实际情况可能需要完整的包名+类名的形式,这里使用的默认包。而bean前面的id用来唯一标示这个bean。
下面的<property name="storeName"><value>"Bruce's Bikes"</value></property>是给这个bean设置属性,这里就是所谓依赖注入的思想。属性名和值可以被动态的set到相应的bean中去。下面这个commandLineView也一样,只不过<ref bean="rentaBike"/>表示它有个属性是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( );
  }
}


它使用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框架来完成了依赖注入。
依赖注入的好处就是可以通过修改配置文件来给类动态加载相关的属性和引用,而不用修改代码。
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号