一个简单的Spring例子:郑阿奇《Java EE 实用教程》

作者:无名 - 软件应用 -
    这两天看郑阿奇主编的一本书《Java EE 实用教程》的Spring章节,依照书上的例子比葫芦画瓢写一个程序, 一个例子居然弄了两天才算运行成功,期间运行时错误频出,每次都要上网找好久的答案。有有感于此,故把写好的代码放在此处,希望对大家有所帮助。

运行环境: JDK版本:1.6
           Eclipse版本:GALILEO
           Spring版本:spring-framework-3.0.5.RELEASE

步骤:

    新建一个Java Project,名称为Spring_DI,为其添加Spring核心类库,添加commons-logging-1.1.1.jar。

    创建包“org.interface”,在该包中新建Person接口,代码如下:
package org.interfaces;
//定义person接口
public interface Person {
    //接口中定义一个吃食物的方法
    public void eatFood();
}


    继续在该包中定义Food接口,代码如下:
package org.interfaces;
//定义Food接口
public interface Food {
    //在接口中定义一个吃的方法,返回吃东西
    public String eat();
}


    创建包“org.interfaces.impl”,在该包中定义Person的实现类Man,代码如下:
package org.interfaces.impl;
import org.interfaces.Food;
import org.interfaces.Person;
    
//person 接口的具体实现类
public class Man implements Person {
    
    //定义Food接口私有属性,面向Food接口编程,而不是具体实现类。
    private Food food;
	
    //构建setter方法
    public void setFood(Food food){
	this.food=food;
    }
    //实现Person接口eatFood方法
    public void eatFood(){
	System.out.println(food.eat());
    }
}


    定义Food的一个实现类Apple,代码如下:
package org.interfaces.impl;

import org.interfaces.Food;

public class Apple implements Food {

    public String eat(){
	return "正在吃苹果……";
    }
}


    定义Food的一个实现类Orange,代码如下:
package org.interfaces.impl;

import org.interfaces.Food;

public class Orange implements Food {

    public String eat(){
	return "正在吃橘子……";
    }
}


    在项目文件夹下编写Spring的配置文件config.xml,使用Spring的配置文件将Person实例和Food实例组织在一起,配置内容如下:
<xml version="1.0" encoding="UTF-8">
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  
    <!--定义一个bean,该bean的id是man,class指定该bean实例的实现类。  -->
    <bean id="man" class="org.interfaces.impl.Man">
        <property name="food">
            <ref local="apple"/>
        </property>
    </bean>
    
    <!-- 定义apple bean,Food接口的实现类 -->
    <bean id="apple" class="org.interfaces.impl.Apple"></bean>
    <bean id="orange" class="org.interfaces.impl.Orange"></bean>
</beans>


    下面就可以编写测试类了,代码如下:
package org.test;
import org.interfaces.Person;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Test {
	
    public static void main(String[] args) {
		
	//创建Application对象,参数为配置文件放置的位置
	ApplicationContext context=
	    new FileSystemXmlApplicationContext("config.xml");
	//通过Person bean的id来获取bean实例,面向接口编程,因此此处强制类型转换为
        //接口类型
	    Person p=(Person)context.getBean("man");
	    p.eatFood();
    }
}


    运行主程序,输出结果显示如下:


    修改配置文件config.xml,
<bean id="man" class="org.interfaces.impl.Man">
    <property name="food">
        <ref local="orange"/>
    </property>
</bean>


    再次运行主程序,结果显示如下:
正在吃橘子……

IT人知识库 原文地址:http://www.itpeo.net/15315/3708458.html





rfedfre

c++与java通过socket实现网络通信的测试

 这个小测试仅仅是为了证明一点:掌握了原理后,语言不再是问题,c++和java也可以实现“通婚”。 C... ...

rfedfre

一段Spring代码引起的调用绑定总结

代码 @Component public class B { void test() { ... ...

rfedfre

使用Gradle部署jar包到Maven中央库

Maven作为目前Java界最好的Dependency管理系统,把jar包托管到Maven中央库,然后通过Maven D... ...

rfedfre

Hibernate的Entit Manager数据值重复的问题

问题描述: 当使用Hibernate的Anotation来定义一个复杂对象时,有可能需要关联别的表,当该对象与关联的表... ...

rfedfre

一段Spring代码引起的调用绑定总结

代码 @Component public class B { void test() { ... ...

rfedfre

配置VS2008中文版调试.netframework源代码

首先确保你的vs2008安装了sp1.   其次打开VS2008,工具->选项->调试->... ...

rfedfre

利用.NET Framework4.0的源代码调试你的应用程序

.NET Framework 的部分源代码是开源的。这些源代码可以供我们学习和参考。也可在也平时调试应用,直接跳入这些... ...

rfedfre

发布过程5分钟内load飙升问题排查

这几天新项目每次发布,都发现load在jetty重启过程中突然load会从0.1突然升高到15以上,3分钟后慢慢降到正常... ...

rfedfre

[转]Microsoft 数据库三版本共存

原文地址:http://blog.csdn.net/ranzj/archive/2008/08/25/2828954.a... ...

rfedfre

java 框架

  A 代码生成器(开发利器);  B 阿里数据库连接池drui... ...

rfedfre

开启nginx cache后导致内存几乎100%问题

1、前些日子某服务被刷,每分钟达到上几百万请求;当时采用了nginx cache来解决的;但是因为某服务不... ...

rfedfre

第六章 Web开发实战1——HTTP服务

此处我说的HTTP服务主要指如访问京东网站时我们看到的热门搜索、用户登录、实时价格、实时库存、服务支持、广告语等这... ...

rfedfre

Google Adwords 关键字策略 – SEO数据搭配

做 Google Adwords 搜索广告的时候,关键字策略关系到我们的ROI高低,我们怎样优化我们的 Adwor... ...

rfedfre

Java应用级产品开发平台APDPlat

APDPlat是Application Product Development Platform的缩写,即应用级产... ...

rfedfre

软件开发高手须掌握的4大SQL精髓语句(综合篇)

软件开发高手须掌握的4大SQL精髓语句(综合篇) 马根峰 ( 广东联合电子收费股份有限公司,广州 51030... ...

rfedfre

linux下rman备份笔记

自动删除七天前的备份: crontab -e 00 00 * * * find /home/oracle/mybac... ...

rfedfre

ARM+LINUX移植攻略(七)Linux 2.6.30.4移植TE2440II开发板

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshi... ...

rfedfre

Java中各种IOStream以及NIO Chanel的性能比较

      当前流行的JDK版本还是1.5和1.6,拿JDK1.6为例... ...

rfedfre

VPLEX - EMC的RAC

本文是2010-5-13号的《最新云计算信息》,希望大家能喜欢! 本周,最受业界瞩目的莫过于在美国波士顿开幕的20... ...

rfedfre

一张关于威博文件管理系统3.6的应用图览

 上图描绘了,威博文件管理系统的应用图览,威博文件管理系统通过“索引数据库” 来定位文件,实行访问管控,文件... ...