`

spring2.5学习笔记(二):IOC控制反转简单演示

阅读更多
beans.xml配置文件
<?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.5.xsd">
		
		<!-- IOC控制反转的原理演示 -->
		<bean id="persondao" class="cn.itcast.dao.impl.PersonDaoBean">
		</bean>
		<bean id="personservice5" class="cn.itcast.service.impl.PersonServiceBean" >
			<!-- 这里运用java的反射机制,将生成的bean组件(persondao)中的方法,映射给ipersondao,
				也就是 在PersonServiceBean中只要建一个persondao相关接口的引用就能调用到实现了这个接口的类中的方法-->
			<property name="ipersondao" ref="persondao"></property>
		</bean>

</beans>



cn.itcast.dao.impl包下的两个java文件
package cn.itcast.dao.impl;
public interface IPersonDao {
	public abstract void add();
}

package cn.itcast.dao.impl;
public class PersonDaoBean implements IPersonDao {
	/* (non-Javadoc)
	 * @see cn.itcast.dao.impl.IPersonDao#add()
	 */
	public void add(){
		System.out.println("执行PersonDaoBean类中的add方法");
	}
}


cn.itcast.service包下的java文件
package cn.itcast.service;
public interface IPersonService {
	public abstract void save();
}


cn.itcast.service.impl包下的java文件
package cn.itcast.service.impl;
import cn.itcast.dao.impl.IPersonDao;
import cn.itcast.service.IPersonService;
public class PersonServiceBean implements IPersonService {

	/* (non-Javadoc)
	 * @see cn.itcast.service.impl.IPersonService#save()
	 */
	//此方法在配置文件bean标签中用init-method属性调用
	private IPersonDao ipersondao ;
	public IPersonDao getIpersondao() {
		return ipersondao;
	}
	public void setIpersondao(IPersonDao ipersondao) {
		this.ipersondao = ipersondao;
	}
	
	public void init(){
		System.out.println("初始化");
	}
	public PersonServiceBean(){
		System.out.println("我被实例化了");
	}
	
	public void save(){
		System.out.println("这是PersonServiceBean类中的save方法");
		ipersondao.add();
	}
	
	public void destroy(){
		System.out.println("关闭打开的资源");
	}
}



最后,单元测试用例:
package junit.test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.service.IPersonService;

public class SpringTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
	
	@Test public void instanceSpring(){
ApplicationContext ctx1 = new ClassPathXmlApplicationContext("beans.xml");

		IPersonService personservice5 = (IPersonService)ctx1.getBean("personservice5");
		personservice5.save();
		
	}

}



学习感想:

打个比方:接口IPersonDao是父亲,类PersonDaoBean是接口的儿子。

父亲年龄大了,儿子要尽孝道。现在情况是,父亲有张银行卡add(),但是没钱。儿子有张银行卡add(),有很多钱。
正常情况下是父亲没钱用,儿子主动打钱。好,现在出问题了,儿子不给老子钱了,那怎么办?

找法院判决吧,判决的结果是:儿子的卡和父亲的卡绑定,父亲要用钱直接用自己的卡取,不管(而且自己的卡是没钱的,只是儿子的有钱),儿子由于父亲不怎么会取钱的手续,一切手续由代办机构代办。父亲只管问要钱,想啥时候要就啥时候要,其他一切不必操心。

程序实现以上比喻是这样的:

1:父亲有卡,IPersonDao接口中add方法(方法没实现,比喻为没钱),儿子有卡,PersonDaoBean类中的方法(方法实现,比喻为有钱)

2:儿子的卡与父亲的卡绑定,就是配置文件的依赖注入
<property name="ipersondao" ref="persondao"></property>

3:代理机构帮父亲办理手续取钱,就是spring帮忙管理对象的创建和销毁。

4:父亲取到的钱
测试类中personservice5.save();,能输出儿子(PersonDaoBean)中的add方法中的语句
分享到:
评论

相关推荐

    Spring2.5学习笔记

    ### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 Java 开发框架,主要用于简化企业级应用的开发工作。Spring 提供了一系列强大的功能,比如控制反转 (Inversion of Control, IOC)...

    spring2.5学习笔记

    ### Spring2.5 学习笔记关键知识点梳理 #### 搭建Spring的运行环境 - **新建项目**: 使用IDE工具如Eclipse或IntelliJ IDEA创建一个新的Java Web项目。 - **Spring配置文件**: 在项目的`src/main/resources`目录下...

    spring2.5学习笔记以及SSH

    Spring 2.5 学习笔记是针对这个经典版本的框架进行深入理解的教程,而SSH则代表了Spring、Struts和Hibernate这三个Java Web开发中最常用的开源框架的整合。这篇笔记详细介绍了如何在项目中使用Spring 2.5以及如何与...

    spring2.5 学习笔记

    【Spring 2.5 学习笔记】 在深入学习Spring 2.5的过程中,我们可以了解到一系列关键的概念和技术。首先,面向抽象编程是Spring的核心理念之一,它鼓励开发者编写可重用且松散耦合的代码,通过接口而非具体实现进行...

    精通Spring2.5pdf书籍proSpring2.5

    书中涵盖的内容包括但不限于:Spring的核心概念、IoC和AOP的实现原理、数据访问策略、Web MVC框架的使用、以及RESTful服务和Web服务的构建。通过学习,开发者可以提高项目开发效率,减少代码耦合,更好地实现松耦合...

    Spring IOC 控制反转

    #### 二、Spring IOC控制反转原理 控制反转是一种设计思想,在Spring框架中主要表现为一种对象管理模式,也称为DI(Dependency Injection)。传统的程序设计中,通常是调用者主动去创建依赖对象或者调用依赖对象的...

    Spring2.5-中文参考手册chm

    Spring的核心特性之一是依赖注入(Dependency Injection,简称DI),也被称为控制反转(Inversion of Control,IoC)。DI允许开发者声明他们所需的依赖关系,而无需手动创建对象或管理这些依赖关系。通过配置文件或...

    Spring源代码解析(一):IOC容器.doc

    Spring框架的IOC(Inversion of Control,控制反转)容器是其核心组件,它负责管理和装配应用中的对象。在Spring源代码解析的第一部分,我们将聚焦于IOC容器,特别是BeanFactory接口,它是所有Spring容器的基础。 ...

    学习Spring笔记_IoC(控制反转)简介

    **Spring框架中的IoC(控制反转)概念** 在软件开发中,IoC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理责任从代码中剥离出来,交由一个容器来处理。Spring框架是Java平台上的一个核心...

    spring 2.5框架图

    4. **Web包**:Spring 2.5的Web模块提供了一个全面的MVC框架,支持RESTful风格的Web服务。该模块还包括Servlet监听器、过滤器以及视图解析器等,帮助构建基于HTTP的Web应用。此外,Spring 2.5引入了...

    spring2.5_学习笔记.

    ### Spring2.5 学习笔记知识点概览 #### 第一课:面向抽象编程 - **概念理解**:面向抽象编程是一种设计模式,其核心思想是通过定义接口或抽象类来实现程序结构的设计,使具体实现与接口分离,增强系统的灵活性和...

    Spring2.5-中文参考手册chm.zip

    5. **容器改进**:Spring 2.5的IoC容器增强了对Java 5和6特性的支持,如泛型和注解。同时,提供了更强大的Bean定义合并功能,使得在不同模块之间共享Bean配置变得更加容易。 6. **Web应用上下文**:Spring 2.5引入...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    Spring2.5是全面的企业级应用框架,它不仅包含IoC(Inversion of Control,控制反转)容器,用于管理对象的生命周期和依赖关系,还提供了AOP(Aspect-Oriented Programming,面向切面编程)功能,实现了对横切关注点...

    spring IOC控制反转 xmind

    spring IOC控制反转 spring IOC控制反转 spring IOC控制反转

    spring2.5常用包

    1. **IoC(Inversion of Control)容器**:Spring 的核心特性是依赖注入(Dependency Injection,DI),通过 IoC 容器来管理对象的生命周期和对象之间的依赖关系。IoC 容器通过 XML 配置文件或注解(如 @Autowired)...

    Spring2.5 IOC的简单实现

    **Spring 2.5 IOC(控制反转)的简单实现** Spring 框架是 Java 开发中的一个核心组件,尤其在企业级应用中广泛应用。它提供了依赖注入(Dependency Injection,DI),也就是通常所说的控制反转(Inversion of ...

    spring 2.5 IOC 自动扫描,自动注入

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理交给了框架,从而让开发者更专注于业务逻辑。而自动扫描和自动注入是Spring 2.5中实现IOC的两个核心特性,极大地简化了...

Global site tag (gtag.js) - Google Analytics