Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>Spring>>Learnnbsp;Springnbsp;innbsp;spring(二)
Learnnbsp;Springnbsp;innbsp;spring(二)
2007-04-13   来源:www.javaresearch.org  作者:未知

二、spring管理对象的简单例子

Bromon原创 请尊重版权

  任何需要交给spring管理的对象,都必须在配置文件中注册,这个过程被称为wiring,下面做一个最简单的Hello world演示,我们将要注册的类如下:

  1. /*
  2.  * 创建日期 2005-3-22
  3.  */
  4. package org.bromon.spring.test;
  5. /**
  6.  * @author Bromon
  7.  */
  8. public class HelloTalker 
  9. {
  10.     public String greeting()
  11.     {
  12.         return "hello world";
  13.     }
  14. }

  然后我们来编写一个spring配置文件,文件名任意,在我这里它是springConfig.xml,需要注意的是这个文件应该存放在classpath所包含的路径中:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4.  <bean id=”helloTalker” class=” org.bromon.spring.test.HelloTalker”>
  5.  </bean>
  6. </beans>

  通过使用bean标签,注册了一个HelloTalker对象,它的名字叫做helloTalker。然后我们编写一个测试类,它的工作是利用spring框架提供的接口,加载配置文件,通过指定对象的id,获得一个对象。它的代码如下:
  1. /*
  2.  * 创建日期 2005-3-17
  3.  */
  4. package org.bromon.spring.test.junit;
  5. import java.io.FileInputStream;
  6. import org.springframework.beans.factory.xml.XmlBeanFactory;
  7. import org.springframework.context.ApplicationContext;
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;
  9. import org.bromon.spring.test;
  10. /**
  11.  * @author Bromon
  12.  */
  13. public class TestStudentManager extends TestCase {
  14.     public void testHelloTalker() 
  15.     {
  16.         try
  17.         {
  18.             ApplicationContext context =new ClassPathXmlApplicationContext("springConfig.xml");
  19.             
  20. HelloTalker ht=(HelloTalker)context.getBean(“helloTalker”);
  21. System.out.println(ht.greeting());
  22.         }catch(Exception e)
  23.         {
  24.             e.printStackTrace();
  25.         }
  26.     }
  27. }

  这个程序就完成了,因为只有一个对象HelloTalker被注册到了spring中,所以不存在对象间的依赖,当然也就不涉及依赖注入。下面演示一个简单的依赖注入:

  第一步是修改HelloTalker,增加一个String name属性:
  1. public String name;


  为该属性编写set方法,该方法必须严格遵守javabean的命名规则:
  1. public void setName(String name)
  2. {
  3.   this.name=name;
  4. }

  修改greeting方法:

  1. public String greeting()
  2. {
  3.   return "hello "+name;
  4. }

  如你所见,name属性没有初试化,因为它的值将在运行过程中被spring动态注射入。

  第二步,修改springConfig.xml中唯一的这个bean配置:

  1. <bean id=”helloTalker” class=” org.bromon.spring.test.HelloTalker”>
  2.  <property name=”name”>
  3.   <value>bromon</value>
  4.  </property>
  5. </bean>


  修改完成。我们将一个名字”bromon”写死在springConfig.xml中,它会被动态的注入到HelloTalker的name属性中,greeting方法将会把它打印出来。重新运行刚才的junit类,可以看到结果。

  我们只演示了如何注入一个最简单的String,实际上我们可以注入任何值类型,也可以注入任何类的实例,也可以注入List、Map、Properties。配置文件管理了所有的对象和对象间的关系,而对象则只负责执行自己的功能,他们的职责越少,藕合度越低,系统就越容易测试,管理维护也更容易。

  <bean>标签还有很多属性,用于指定对象如何被实例化,它也有很多子标签用于配置对象的属性,请大家参考相关的DTD和文档,能够很快的掌握。本系列文章不是spring手册,spring的基础知识请参考spring in action,足够详细准确。后面的章节更多的讨论系统设计、开发的一些细节和高级特性。

下一篇:在spring中进行hibernate开发


  --相关文章--
· 用代码学习Spring:IoC、AOP (2007-04-17)
· 用Spring更好地处理Struts动作三种整合 (2007-04-17)
· 玩玩Spring之IOC (2007-04-17)
· 新手入门之Spring BeanDoc使用 (2007-04-17)
· 彻底理解spring的定制任务(scheduling) (2007-04-17)
· 对非String类型进行校验时的出错处理 (2007-04-17)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接