首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一步步的学习Spring(2)

2012-09-20 
一步步的学习Spring(二)本节学习下依赖注入IOC:?废话少说,直接上例子,例子是模拟小狗和人是怎么说话的。?首

一步步的学习Spring(二)

本节学习下依赖注入IOC:

?

废话少说,直接上例子,例子是模拟小狗和人是怎么说话的。

?

首先,定义Living接口以及它的两个实现Person和Dog

?

Living.java

?

?

package ioc;/*** @ClassName: Living* @Description: 有生命的所有物体* @author sunrain  * @date 2011-1-1*/public interface Living {/*** @Title: say* @Description: 所有物体的说的表现* @param @return    * @return String    说出来的东东* @throws*/public  String say();}

?Person.java

?

?

package ioc;/*** @ClassName: Person* @Description: 人* @author sunrain  * @date 2011-1-1*/public class Person implements Living {public String say() {// TODO Auto-generated method stubreturn "您好!";}}

?

?

package ioc;/*** @ClassName: Dog* @Description: 狗* @author sunrain  * @date 2011-1-1*/public class Dog implements Living {public String say() {// TODO Auto-generated method stubreturn "汪汪汪";}}

?

然后定义Living要做的任务(接口以及实现):

?

?

package ioc;/*** @ClassName: Task* @Description: 定义各种任务* @author sunrain  * @date 2011-1-1*/public interface Task {/*** @Title: eat* @Description: 任务 -说* @param     设定文件* @return void    返回类型* @throws*/public  void  say();}

?

?

package ioc;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/*** @ClassName: TaskImpl* @Description: Task实现类* @author sunrain  * @date 2011-1-1*/public class TaskImpl implements Task {private static final Log log = LogFactory.getLog(TaskImpl.class);/*** @Fields living : 有生命的东东*/private  Living  living ;private  String  name;public TaskImpl(String name){this.name = name;}public Living getLiving() {return living;}public void setLiving(Living living) {this.living = living;}public void say() {log.info(this.name+" say :"+living.say());}}

?写了一堆类,好像没讲IOC,那么 TaskImpl实现类中,我们定义了两个属性,living和name,就是我们要依赖注入的两个属性了,来看下XML吧

?

?

<?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="helloWorld"  ref="person"></property></bean><bean id="dogTask" ref="dog"></property></bean><bean id="person" name="code">import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.FileSystemResource;import org.springframework.core.io.Resource;public class IocTest {/** * @Title: main * @Description: IOC测试类 * @param @param args    设定文件 * @return void    返回类型 * @throws */public static void main(String[] args) {Resource res = new FileSystemResource("beans.xml");BeanFactory factory = new XmlBeanFactory(res);Task t = (Task) factory.getBean("personTask");t.say();t = (Task)factory.getBean("dogTask");t.say();}}
?

再看看日志:

?

?

0103/15:10:58 <INFO > [org.springframework.core.CollectionFactory 66] JDK 1.4+ collections available0103/15:10:58 <INFO > [org.springframework.core.CollectionFactory 71] Commons Collections 3.x available0103/15:10:58 <INFO > [org.springframework.beans.factory.xml.XmlBeanDefinitionReader 163] Loading XML bean definitions from file [G:\workspace\SpringStudy\beans.xml]0103/15:10:58 <INFO > [ioc.TaskImpl 32] sunrain say :您好!0103/15:10:58 <INFO > [ioc.TaskImpl 32] tt say :汪汪汪

?

在测试类中,我们并没有初始化TaskImpl类中的两个属性living和name,但是日志却打印出来了,这就要归功于IOC了,看看XML的配置你就会发现,在XML配置中,我们已经为TaskImpl的属性都指定了相应的值。

?

?

<bean id="personTask"  ref="person"></property></bean><bean id="dogTask" ref="dog"></property></bean>

?

由于对IOC的一些其他特性还不熟习,先写这样了,以后再补充了。

?

?

热点排行