Spring IOC 实例

软件151 徐中飞

Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用。这一章先从Spring的IoC开始。所谓IoC就是一个用XML来定义生成对象的模式,我们看看如果来使用的。

 

源代码如下:

package
cn.com.chengang.spring;

public interface Human {

void eat();

void walk();

}

package cn.com.chengang.spring;

public class Chinese implements Human {

/* (非 Javadoc)

* @see cn.com.chengang.spring.Human#eat()

*/

public void eat() {

System.out.println("中国人对吃很有一套");

}

/* (非 Javadoc)

* @see cn.com.chengang.spring.Human#walk()

*/

public void walk() {

System.out.println("中国人行如飞");

}

}

package cn.com.chengang.spring;

public class American implements Human {

/* (非 Javadoc)

* @see cn.com.chengang.spring.Human#eat()

*/

public void eat() {

System.out.println("美国人主要以面包为主");

}

/* (非 Javadoc)

* @see cn.com.chengang.spring.Human#walk()

*/

public void walk() {

System.out.println("美国人以车代步,有四肢退化的趋势");

}

}

2、对以上对象采用工厂模式的用法如下

  创建一个工厂类Factory,如下。这个工厂类里定义了两个字符串常量,所标识不同的人种。getHuman方法根据传入参数的字串,来判断要生成什么样的人种。

package
cn.com.chengang.spring;

public class Factory {

public final static String CHINESE = "Chinese";

public final static String AMERICAN = "American";

public Human getHuman(String ethnic) {

if (ethnic.equals(CHINESE))

return new Chinese();

else if (ethnic.equals(AMERICAN))

return new American();

else

throw new IllegalArgumentException("参数(人种)错误");

}

}

 

package
cn.com.chengang.spring;

public class ClientTest {

public static void main(String[] args) {

Human human = null;

human = new Factory().getHuman(Factory.CHINESE);

human.eat();

human.walk();

human = new Factory().getHuman(Factory.AMERICAN);

human.eat();

human.walk();

}

}

  控制台的打印结果如下图3.2.2:

 

图3.2.2

  3、采用Spring的IoC的用法如下图3.2.3:

  在项目根目录下创建一个bean.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="Chinese"
class="cn.com.chengang.spring.Chinese"/>

<bean id="American"
class="cn.com.chengang.spring.American"/>

</beans>

 

 

图3.2.3

修改ClientTest程序如下:

package cn.com.chengang.spring;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class ClientTest {

public final static String CHINESE = "Chinese";

public final static String AMERICAN = "American";

public static void main(String[] args) {

// Human human = null;

// human = new Factory().getHuman(Factory.CHINESE);

// human.eat();

// human.walk();

// human = new Factory().getHuman(Factory.AMERICAN);

// human.eat();

// human.walk();

ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");

Human human = null;

human = (Human) ctx.getBean(CHINESE);

human.eat();

human.walk();

human = (Human) ctx.getBean(AMERICAN);

human.eat();

human.walk();

}

}

时间: 2024-08-17 05:07:14

Spring IOC 实例的相关文章

手把手教你实现Spring ioc

手把手教你实现Spring ioc "Don't call us, we'll call you(不要联系我,我会主动联系你)" 这是好莱坞很经典的一句话,应用在ioc(控制反转)领域,发现理解起来相得益彰--你作为用户不需要控制业务实体的生成,交给我容器来控制,这就是控制反转.不过,这样理解起来也有点麻烦,套用面向对象大师Martin Fowler的说法更为贴切: "Dependency Inversion(依赖注入)" 当容器中所有的实体bean 都被管理起来的

spring IOC

本节要点: IOC容器概述 IOC容器的工作原理 BeanFactory接口及常用实现类XmlBeanFactory ApplicationContext接口及常用实现类 BeanFactory和ApplicationContext的区别 1  IOC容器概述 Spring的IoC容器实现了控制反转,即在开发过程中,开发人员不需要关心容器是怎样的,也不需要调用容器的任何API.容器会自动进行被管理对象的初始化及对象之间依赖关系的维护. 在Spring中,最重要的是两个包,提供了IoC容器的基本功

我讨厌注解式的Spring IOC

spring的ioc,原本是在"实例"层面上的.同样的一个类,我可以通过多个<bean>标签,得到多个实例.并且,每个bean中的属性配置都可以不一样,从而使我得到多个不一样的实例. 举个例子.我写过这样一个类: class A implements AI{ private B b; private C c; private D d; @Override public void aService(){ b.bService(); c.cService(); d.dServi

Java面试--Spring技术要点--Spring IOC

7  Spring IOC(依赖注入)的方式 Setter方法注入 构造器方法注入 工厂方法注入(实例工厂/静态工厂) 自动装配(需要开启配置,不建议使用) http://blessht.iteye.com/blog/1162131 8  IOC方式建议(构造器注入还是 Setter方法注入) 两种依赖方式都可以使用,构造器注入和Setter方法注入.最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖. 9  什么是Spring beans Springbeans是那些形成S

Spring IoC的使用配置(一)

本文主要交代Spring相关的配置的快速了解与使用,所以对于不长常使用的配置项简单叙述或不讲解,需要深入了解Spring的原理,还需读者自行学习或补充. 本例使用的Spring版本为spring-4.0.0.M2,准备环境操作如下: 一.创建Java Project项目,导入需要的Spring的jar.本例使用的包括: /SpringLearn/lib/spring-aop-4.0.0.M2.jar /SpringLearn/lib/spring-beans-4.0.0.M2.jar /Spri

spring IOC(转)

原文 http://stamen.iteye.com/blog/1489223 引述:IoC(控制反转:Inverse of Control)是Spring容器的内核,AOP.声明式事务等功能在此基础上开花结果.但是IoC这个重要的概念却比较晦涩隐讳,不容易让人望文生义,这不能不说是一大遗憾.不过IoC确实包括很多内涵,它涉及代码解耦.设计模式.代码优化等问题的考量,我们打算通过一个小例子来说明这个概念. 通过实例理解IoC的概念 贺岁大片在中国已经形成了一个传统,每到年底总有多部贺岁大片纷至沓

Spring -- IOC/DI 基础概念的理解

Spring -- IOC/DI 基础概念 思维导图: ------------------------------------------------------- IoC/DI 的基本概念 IoC是什么 ? IoC -- Inversion of control, 控制反转   在Java开发中,IoC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制.IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则. 理解IoC的关键是明

Spring IoC入门

------------------siwuxie095 Spring IoC 环境搭建 1.先下载相关库文件,下载链接: (1)http://projects.spring.io/spring-framework/ (2)http://repo.spring.io/release/org/springframework/spring/ 注意:下载以 -dist.zip 结尾的文件,这里选择下载 Spring 4.3 版本 将 spring-framework-4.3.7.RELEASE-dis

Spring IOC 源码简单分析 04 - bean的初始化

### 准备 ## 目标 了解 Spring 如何初始化 bean 实例 ##测试代码 gordon.study.spring.ioc.IOC04_Initialization.java public class IOC04_Initialization { public static void main(String[] args) { Resource resource = new ClassPathResource("ioc/ioc04.xml"); DefaultListabl