http://mynote.iteye.com/admin/blogs/1174520
先看看上面这个简单工厂的例子:
spring的IOC类似于简单工厂,为客户端生成实例:将上面的简单工厂改为spring实现,如下:
Person接口
package com.test;
public interface Person {
public String sayHello(String name);
public String sayGoodbye(String name);
}
Chinese
package com.test;
public class Chinese implements Person {
public String sayGoodbye(String name) {
return "再见! "+name;
}
public String sayHello(String name) {
return "你好! "+name;
}
}
American
package com.test;
public class American implements Person {
public String sayGoodbye(String name) {
return "GoodBye! "+name;
}
public String sayHello(String name) {
return "Hello! "+name;
}
}
applicationContext.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="com.test.Chinese"/>
<bean id="american" class="com.test.American"/>
</beans>
测试类
package com.test;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Client {
public static void main(String[] args) {
ClassPathResource cpr = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(cpr);
Chinese chinese = (Chinese) factory.getBean("chinese");
System.out.println(chinese.sayHello("lisi"));
System.out.println(chinese.sayGoodbye("lisi"));
}
}
结果打印出:你好! lisi
再见! lisi
再看一个例子:
Person接口
package com.test;
public interface Person {
public void doWork();
}
Tool接口
package com.test;
public interface Tool {
public void doRealWork();
}
具体类:Chinese
package com.test;
public class Chinese implements Person {
private Tool tool;
public void doWork() {
tool.doRealWork();
}
public Tool getTool() {
return tool;
}
public void setTool(Tool tool) {
this.tool = tool;
}
}
具体工具A
package com.test;
public class ConcreteToolA implements Tool {
public void doRealWork() {
System.out.println("do concrete tool a");
}
}
spring配置文件,可以看到在chinese的bean中引用了ConcreteToolA的实例
<bean id="toolA" class="com.test.ConcreteToolA"/>
<bean id="chinese" class="com.test.Chinese">
<property name="tool" ref="toolA"/>
</bean>
测试类
package com.test;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Client {
public static void main(String[] args) {
ClassPathResource cpr = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(cpr);
Person person = (Person) factory.getBean("chinese");
person.doWork();
}
}
打印结果:do concrete tool a
再看一个例子:可以spring配置文件中设置属性的值
GreetingService接口
package com.springinaction.chapter01;
public interface GreetingService {
public void sayGreeting();
}
具体实现类
package com.springinaction.chapter01;
public class GreetingServiceImpl implements GreetingService {
private String greeting;
public void sayGreeting() {
System.out.println(this.greeting);
}
public void setGreeting(String greeting) {
this.greeting = greeting;
}
}
spring配置文件
<bean id="greetingService" class="com.springinaction.chapter01.GreetingServiceImpl">
<property name="greeting">
<value>lisi</value>
</property>
</bean>
测试类
package com.springinaction.chapter01;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class HelloApp {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
GreetingService greetingService = (GreetingService) context.getBean("greetingService");
greetingService.sayGreeting();
}
}
如果类中的属性是数组类型的该如何处理?看下例:
接口类
package com.test;
public interface Person {
public void test();
}
具体类Person,定义了很多集合类型
package com.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class Chinese implements Person {
private List schools = new ArrayList();
private Map score = new HashMap();
private Properties health = new Properties();
private Set tools = new HashSet();
public Map getScore() {
return score;
}
public void setScore(Map score) {
this.score = score;
}
public Properties getHealth() {
return health;
}
public void setHealth(Properties health) {
this.health = health;
}
public Set getTools() {
return tools;
}
public void setTools(Set tools) {
this.tools = tools;
}
public List getSchools() {
return schools;
}
public void setSchools(List schools) {
this.schools = schools;
}
public void test() {
System.out.println(schools);
System.out.println(score);
System.out.println(health);
System.out.println(tools);
}
}
在spring配置文件中赋值
<?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="toolA" class="com.test.ConcreteToolA"/>
<bean id="chinese" class="com.test.Chinese">
<property name="schools">
<list>
<value>小学</value>
<value>中学</value>
<value>大学</value>
</list>
</property>
<property name="score">
<map>
<entry key="数学">
<value>81</value>
</entry>
<entry key="英语">
<value>89</value>
</entry>
<entry key="语文">
<value>82</value>
</entry>
</map>
</property>
<property name="health">
<props>
<prop key="血压">正常</prop>
<prop key="身高">175</prop>
</props>
</property>
<property name="tools">
<set>
<value>字符串工具</value>
<bean class="com.test.ConcreteToolA"></bean>
<ref local="toolA"/>
</set>
</property>
</bean>
</beans>
测试类Client
package com.test;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Client {
public static void main(String[] args) {
ClassPathResource cpr = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(cpr);
Person person = (Person) factory.getBean("chinese");
person.test();
}
}
打印出的结果
[小学, 中学, 大学]
{数学=81, 英语=89, 语文=82}
{血压=正常, 身高=175}
[字符串工具, com.test.ConcreteToolA@a1807c, com.test.ConcreteToolA@fa7e74]
分享到:
相关推荐
通过学习和实践这个"JavaEE spring IoC入门案例",你将能够理解并掌握如何在Spring框架下实现IoC,从而提高你的JavaEE开发能力。深入理解和运用这些知识点,可以让你在实际项目中编写出更加健壮、易维护的代码。
《Spring入门:Spring概述与Spring IoC》是针对初学者的一篇教程,旨在引导开发者进入Spring框架的世界。本文将深入探讨Spring的核心概念,特别是Spring的Inversion of Control(IoC,控制反转)特性,以及如何在...
总的来说,学习"JavaEE Spring IoC入门"意味着你需要理解Spring如何通过IoC管理对象,掌握XML配置文件的编写,以及如何在Web环境中使用Spring MVC进行开发。此外,还需要了解如何编写测试用例来验证Spring配置的有效...
这个入门示例项目旨在帮助初学者了解和掌握Spring 2.5.6版本中的注解使用和基于XML的IoC配置。 首先,让我们来探讨一下Spring的IoC概念。IoC是一种设计模式,它将对象的创建和管理权交给了容器,而不是由对象自身...
在本例“Spring Ioc(依赖注入)入门例子--属性注入”中,我们将关注如何通过属性注入来管理依赖。 属性注入是指Spring容器将一个对象的属性值设置为另一个对象的引用。这通常用于将服务对象注入到需要使用它们的...
Spring 入门知识点 Spring 概述 Spring 是一个开源框架,旨在简化企业级应用开发。它使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。Spring 是一个 IOC(控制反转)和 AOP(面向切面编程)容器框架。 ...
依赖注入:Dependency Injection IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 ... ref:用于指定其他bean类型数据,它所指的是在spring的IOC容器中出现的bean
spring3的IOC,AOP,JDBC,orm等各个模块的使用示例集锦,可以作为入门的spring学习示例教程 在org.springweb.context.test包下 1.IOC * spring框架设计理念(POJO化) * 1.IOC 概念,作用,优点 Donnot call me,we ...
Spring中的IoC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理权交给框架处理,使得应用程序的组件之间解耦。在本例中,我们将通过一个简单的例子来理解如何在Spring中使用IoC。 首先,...
这本书籍“一本很不错的关于spring入门的书籍”显然是针对初学者设计的,旨在帮助新手快速掌握Spring的基本概念和核心功能。 Spring框架的核心特性包括: 1. **依赖注入(Dependency Injection,简称DI)**:这是...
入门及ioc"中,我们将深入探讨Spring框架的基础知识,特别是其核心特性——控制反转(Inversion of Control,简称IOC)。 IOC是一种设计模式,它的核心思想是将对象的创建和管理交给一个容器来处理,而不是由对象...
spring_ioc快速入门
### Spring入门学习:IOC与DI详解 #### 一、什么是IOC? **IOC**,全称为 **Inversion of Control**(控制反转),它并不是一项具体的技术,而是一种设计思想。在传统的Java开发过程中,当我们需要使用某个组件时...
**Spring之IoC入门实例详解** 在Java世界中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)能力而广受赞誉。IoC是一种设计模式,它将对象的创建和...
《Spring入门到精通》这本书是针对Java开发人员深入学习Spring框架的一份宝贵资源。Spring作为Java企业级应用开发中的核心框架,它提供了丰富的功能,包括依赖注入、面向切面编程、事务管理、数据访问以及Web应用...
Spring入门级教程,从零开始教你认识Spring,了解Spring,理解Spring的两大核心IoC和AOP,教你如何使用Spring进行开发
#### 二、Spring入门指南 - **建立Spring开发环境:** - **下载JDK:** Java Development Kit (JDK) 是必需的,因为它提供了Java应用程序运行所需的环境。 - **安装JDK:** 安装JDK后,需要配置环境变量Path和...
本文将深入探讨Spring的核心概念——依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC),并结合提供的"Spring项目IOC入门案例、Spring项目DI入门案例的代码"进行详细解析。...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,它以其依赖注入...这份"spring入门介绍PPT"将是你深入理解Spring的宝贵资源,通过它,你可以逐步掌握Spring的核心理念和技术,开启你的Spring开发之旅。