您的位置:首页 > 编程语言 > Java开发

Learn Spring in spring(二) (zz)

2005-08-14 01:36 537 查看
二、spring管理对象的简单例子

Bromon原创 请尊重版权

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

/*

* 创建日期 2005-3-22

*/

package org.bromon.spring.test;

/**

* @author Bromon

*/

public class HelloTalker

{

public String greeting()

{

return "hello world";

}

}

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

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

 <bean id=”helloTalker” class=” org.bromon.spring.test.HelloTalker”>

 </bean>

</beans>

  通过使用bean标签,注册了一个HelloTalker对象,它的名字叫做helloTalker。然后我们编写一个测试类,它的工作是利用spring框架提供的接口,加载配置文件,通过指定对象的id,获得一个对象。它的代码如下:

/*

* 创建日期 2005-3-17

*/

package org.bromon.spring.test.junit;

import java.io.FileInputStream;

import org.springframework.beans.factory.xml.XmlBeanFactory;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.bromon.spring.test;

/**

* @author Bromon

*/

public class TestStudentManager extends TestCase {

public void testHelloTalker()

{

try

{

ApplicationContext context =new ClassPathXmlApplicationContext("springConfig.xml");

HelloTalker ht=(HelloTalker)context.getBean(“helloTalker”);

System.out.println(ht.greeting());

}catch(Exception e)

{

e.printStackTrace();

}

}

}

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

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

public String name;

  为该属性编写set方法,该方法必须严格遵守javabean的命名规则:

public void setName(String name)

{

  this.name=name;

}

  修改greeting方法:

public String greeting()

{

  return "hello "+name;

}

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

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

<bean id=”helloTalker” class=” org.bromon.spring.test.HelloTalker”>

 <property name=”name”>

  <value>bromon</value>

 </property>

</bean>

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

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

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

/*

* 创建日期 2005-3-22

*/

package org.bromon.spring.test;

/**

* @author Bromon

*/

public class HelloTalker

{

public String greeting()

{

return "hello world";

}

}

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

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

 <bean id=”helloTalker” class=” org.bromon.spring.test.HelloTalker”>

 </bean>

</beans>

  通过使用bean标签,注册了一个HelloTalker对象,它的名字叫做helloTalker。然后我们编写一个测试类,它的工作是利用spring框架提供的接口,加载配置文件,通过指定对象的id,获得一个对象。它的代码如下:

/*

* 创建日期 2005-3-17

*/

package org.bromon.spring.test.junit;

import java.io.FileInputStream;

import org.springframework.beans.factory.xml.XmlBeanFactory;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.bromon.spring.test;

/**

* @author Bromon

*/

public class TestStudentManager extends TestCase {

public void testHelloTalker()

{

try

{

ApplicationContext context =new ClassPathXmlApplicationContext("springConfig.xml");

HelloTalker ht=(HelloTalker)context.getBean(“helloTalker”);

System.out.println(ht.greeting());

}catch(Exception e)

{

e.printStackTrace();

}

}

}

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

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

public String name;

  为该属性编写set方法,该方法必须严格遵守javabean的命名规则:

public void setName(String name)

{

  this.name=name;

}

  修改greeting方法:

public String greeting()

{

  return "hello "+name;

}

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

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

<bean id=”helloTalker” class=” org.bromon.spring.test.HelloTalker”>

 <property name=”name”>

  <value>bromon</value>

 </property>

</bean>

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

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

  <bean>标签还有很多属性,用于指定对象如何被实例化,它也有很多子标签用于配置对象的属性,请大家参考相关的DTD和文档,能够很快的掌握。本系列文章不是spring手册,spring的基础知识请参考spring in action,足够详细准确。后面的章节更多的讨论系统设计、开发的一些细节和高级特性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: