知识大全 Spring 控制反转(IoC)容器

Posted

篇首语:知道如何活用知识最重要,知道知识的来龙去脉次之,拥有知识再次之。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring 控制反转(IoC)容器相关的知识,希望对你有一定的参考价值。

Spring 控制反转(IoC)容器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  (二)个人整理Spring系列 控制反转(IoC)容器

  一 什么是控制反转模式?  不创建对象 但是描述创建它们的方式 在代码中不直接与对象和服务连接 但在配置文件中描述哪一个组件需要哪一项服务   容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起

  二 Spring 中的 Bean?  由Spring IoC容器所管理的对象被称之为bean bean就是由Spring容器初始化 装配及被管理的对象   bean定义以及bean相互间的依赖关系将通过配置元数据来描述    三 什么是Spring IoC容器?  springframework beans包是Spring IoC容器的基础   springframework beans factory BeanFactory接口是Spring IoC容器的实际代表者   IoC容器负责容纳此前所描述的bean 并对bean进行管理     BeanFactory 接口   BeanFactory是IoC容器的核心接口 是工厂设计模式的实现 bean 工厂的概念是 Spring 作为 IOC 容器的基础    它的职责包括 实例化 检索 配置应用程序中的对象及管理对象之间的关系       BeanFactory 支持两个对象模型     单态模型 提供了具有特定名称的对象的共享实例 可以在查询时对其进行检索 Singleton 是默认的也是最常用的对象模型 对于无状态服务对象很理想     原型模型 确保每次检索都会创建单独的对象 在每个用户都需要自己的对象时 原型模型最适合     ApplicationContext接口   ntext ApplicationContext由BeanFactory接口派生扩展而来 因而提供了BeanFactory所有的功能    在构建J EE应用时 使用ApplicationContext将是更好的选择       context包还提供了以下的功能     MessageSource 提供国际化的消息访问     资源访问 如URL和文件     事件传播 实现了ApplicationListener接口的bean     载入多个(有继承关系)上下文

   配置元数据   Spring IoC容器将读取配置元数据 并通过它对应用中各个对象进行实例化 配置以及组装       基于XML的元数据是最常用到的配置元数据格式 然而 它并不是唯一的描述格式 Spring IoC容器在这一点上是完全开放的    当使用基于XML的配置元数据时 将在顶层的<beans/>元素中配置一个或多个<bean/>元素       bean定义与应用程序中实际使用的对象一一对应 通常情况下bean的定义包括     服务层对象 数据访问层对象(DAO) 类似Struts Action的表示层对象 Hibernate SessionFactory对象 JMS Queue对象等等

  四 实例化IoC容器(基于XML的元数据)  通过ClassPathXmlApplicationContext类加载一个或多个XML文档来实例化BeanFactory接口的实现扩展ApplicationContext类   要从 BeanFactory 检索 bean 只需调用 getBean() 方法 传入将要检索的 bean 的名称即可

  五 一个简单Spring 示例

   建立Java项目 MySpring

   导入Spring框架

   创建JavaBean HelloBean 编写testHello方法

  HelloBean java

  view plaincopy to clipboardprint?    <FONT size= >  package qu bean;

  public class HelloBean

  public String sayHello(String name)

  return String format( % $s : Hello World! name);

  

  </FONT>

  package qu bean;

  public class HelloBean

  public String sayHello(String name)

  return String format( % $s : Hello World! name);

  

   配置applicationContext xml 将HelloBean注入Spring容器

  applicationContext xml

  view plaincopy to clipboardprint?    <FONT size= >  <?xml version= encoding= UTF ?>

  <beans

  xmlns=

  xmlns:xsi= instance

  xsi:schemaLocation= beans xsd >

  <! 方法

  <import resource= OtherXML/helloBean xml />

   >

  <! 方法 >

  <bean class= qu bean HelloBean id= helloBean >

  </bean>

  </beans></FONT>

  <?xml version= encoding= UTF ?>

  <beans

  xmlns=

  xmlns:xsi= instance

  xsi:schemaLocation= beans xsd >

  <! 方法

  <import resource= OtherXML/helloBean xml />

   >

  <! 方法 >

  <bean class= qu bean HelloBean id= helloBean >

  </bean>

  </beans>view plaincopy to clipboardprint?    <FONT size= ><STRONG><U>helloBean xml</U></STRONG></FONT>

  helloBean xmlview plaincopy to clipboardprint?    <?xml version= encoding= UTF ?>

  <beans

  xmlns=

  xmlns:xsi= instance

  xsi:schemaLocation= beans xsd >

  <bean class= qu bean HelloBean id= helloBean >

  </bean>

  </beans>

  <?xml version= encoding= UTF ?>

  <beans

  xmlns=

  xmlns:xsi= instance

  xsi:schemaLocation= beans xsd >

  <bean class= qu bean HelloBean id= helloBean >

  </bean>

  </beans>view plaincopy to clipboardprint?    <FONT size= ></FONT>

   导入Junit 测试

   编写测试类TestHello 重写setUp方法实例化容器 编写testHello方法测试HelloBean的hello方法

  view plaincopy to clipboardprint?    <FONT size= >   TestHello java</FONT>

  TestHello javaview plaincopy to clipboardprint?    <FONT size= >

  package qu test;

  import ntext ApplicationContext;

  import ntext support ClassPathXmlApplicationContext;

  import qu bean HelloBean;

  import junit framework TestCase;

  public class TestHello extends TestCase

  private ApplicationContext ctx;

  private HelloBean hello;

  protected void setUp() throws Exception

  super setUp();

  this ctx = new ClassPathXmlApplicationContext(

  new String[] ApplicationContext xml OtherXML/helloBean xml );

  this hello = (HelloBean) this ctx getBean( helloBean );

  

  public void testSayHello()

  assertEquals( Java : Hello World! this hello sayHello( Java ));

  

  

cha138/Article/program/Java/ky/201311/27933

相关参考

知识大全 轻量级IoC容器来扩展ANT享受SPRING(图)

轻量级IoC容器来扩展ANT享受SPRING(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用SpringtUtil获取Spring IoC容器中的Bean

使用SpringtUtil获取SpringIoC容器中的Bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 spring代码分析

  在Spring中IOC容器的重要地位我们就不多说了对于Spring的使用者而言IOC容器实际上是什么呢?我们可以说BeanFactory就是我们看到的IoC容器当然了Spring为我们准备了许多种

知识大全 自然的访问spring容器中的bean

   Spring依赖其IOC特征轻松的管理著一堆非常有价值的bean这些bean在spring容器中的依赖关系都已注入好所以相互调用非常方便  但既然是有价值的bean

知识大全 Spring中IoC的入门实例详解

Spring中IoC的入门实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Spring的

知识大全 Spring的IoC学习笔记之BeanFactoryPostProcessor

Spring的IoC学习笔记之BeanFactoryPostProcessor  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,

知识大全 Spring IOC配置与应用

SpringIOC配置与应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   &nbs

知识大全 spring,ioc模式与ejb3的SLSB实现

spring,ioc模式与ejb3的SLSB实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 直接召唤系与IoC fashion使用Spring

直接召唤系与IoCfashion使用Spring  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 IoC、AOP

用代码学习Spring:IoC、AOP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!