`
ganshisheng
  • 浏览: 41937 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring基于IOC容器基本原理

阅读更多
一、简介
    org.springframework.beans及org.springframework.context包 是Spring IoC容器
的基础。BeanFacotry提供的高级配置机制,使得管理各种对象成为可能,ApplicationContext是BeanFactory的扩展,因而BeanFactory所具备的能力和行为也适用于ApplicationContext,并且功能得到了进一步增强,比如更易 与Spring AOP集成、资源处理(国际化处理)、事件传递及各种不同应用层的context实现。
总之,BeanFactory提供了配制框架及基本功能,而 ApplicationContext 则增加了更多支持企业核心内容的功能。

二、 容器和bean
在Spring中,那些组成你应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象(pojo)没有什么区别了。


1、容器

BeanFactory 是Spring IoC容器的实际代表者,IoC容器负责容纳所描述的bean,并对bean进行管理。
在Spring中,BeanFactory是IoC容器的核心接口。 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

1.1、实例化bean
bean定义描述如何创建一个或多个对象实例。容器从bean定义列表中取得一个指定的bean定义,并根据bean定义里面的配置元数据,使用反射机制来创建实际对象。bean的实例化的定义方式如下:

//用构造器来实例化
<bean id="exampleBean" class="examples.ExampleBean"/>

//使用静态工厂方法实例化
<bean id="exampleBean"
      class="examples.ExampleBean2"
      factory-method="createInstance"/>

//使用实例工厂方法实例化
<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="exampleBean"
      factory-bean="serviceLocator"
      factory-method="createInstance"/>


1.2、实例化容器
spring团队倾向于把xml配置文件拆成多个部分的做法。通过将xml配置文件的路径作为参数传给ApplicationContext构造器,生成一个ApplicationContext实例,即实例了BeanFactory,BeanFacotry从多个配置文件读取bean定义。
ApplicationContext加载xml文件写法可以这样:

//1 第一种方法,使用数组
ApplicationContext context = new ClassPathXmlApplicationContext(
        new String[] {"services.xml", "daos.xml"});
//2 使用通配符
ApplicationContext contex=new ClassPathXmlApplicationContext("s*.xml");

//3 使用组合的方式
ApplicationContext contex=new ClassPathXmlApplicationContext("services.xml");
在services.xml中
     <import resource="daos.xml"/>  执行resource路径为相对daos.xml的路径 


其他加截xml配置文件实例化IOC容器的方法有:

//applicationContext.xml放在工程目录下,也可以写成绝对路径
Resource resource = new FileSystemResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);

//位于src目录下
ClassPathResource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
 
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
//位于src目录下
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml", "applicationContext2.xml"});
BeanFactory factory = (BeanFactory) context;


三、使用容器
BeanFactory factory = context;

获得BeanFactory容器后,接着使用getBean(String)就可以取得bean实例。

四、简单的例子(基于IOC的bean注入,将bean注入到执行类Test里)
首先创建一个对象HelloWorld(bean)
public class HelloWorld {
	private String msg;

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
	
}


然后修改spring配置文件applicationContext.xml,在配置文件中实例化bean
<bean id="helloBean" class="com.spring.demo.HelloWorld">
       <property name="msg" value="Hello World!"/>
   </bean> 


再创建一个将要把bean注入进的类Test
public static void main(String[] args){
		//读取配置文件,获得BeanFactory
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		BeanFactory factory = context;
		
		HelloWorld hello = (HelloWorld)factory.getBean("helloBean");
		
		System.out.println(hello.getMsg());	
	}

通过Bean上下文工具获取Bean对象并注入给Test,然后输出其中的属性.
分享到:
评论

相关推荐

    Spring技术内幕:深入解析Spring架构与设计原理

    《Spring技术内幕:深入解析Spring架构与设计...第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。

    Spring技术内幕:深入解析 Spring架构与设计原理.pdf

    第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。 无论你是Java程序员、Spring开发者,还是平台...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版)

    本书从源代码的角度对spring的内核和各个主要...第二部分深入阐述了各种基于ioc容器和aop的java ee组件在spring中的实现原理;第三部分讲述了acegi安全框架、dm模块以及flex模块等基于spring的典型应用的设计与实现。

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分)

    国内第一本基于Spring3.0的著作,从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透Spring框架的优秀架构和设计思想,而且还能从Spring优雅的实现源码...

    深入解析Spring架构与设计原理

    第二部分深入阐述了各种基于IoC容器和AOP的JavaEE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。无论你是Java程序员、Spring开发者,还是平台...

    跟我学spring3(1-7).pdf

    Spring概述2.1 IoC基础2.2 IoC 容器基本原理2.3 IoC的配置使用——跟我学Spring33.1 DI的配置使用3.2 循环依赖3.3 更多DI的知识 3.4 Bean的作用域 4.1 基础知识4.2 内置Resource实现4.3 访问Resource4.4 Resource...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版) 决战大数据时代!IT技术人员不得不读! 计文柯 著

    第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。    无论你是Java程序员、Spring开发者,还是...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版)

    第二部分深入阐述了各种基于IoC容器和AOP的JavaEE组件在Spring和的实现原理,第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。无论你是Java程序员、Spring开发者,还是平台...

    SPRING技术内幕:深入解析SPRING架构与设计原理

    第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。论你是Java程序员、Spring开发者,还是平台开发...

    Spring技术内幕:深入解析 Spring架构与设计原理

    第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。论你是Java程序员、Spring开发者,还是平台开发...

    Spring技术内幕:深入解析Spring架构与设计原理 1/2

     国内第一本基于spring3.0的著作,从源代码的角度对spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透spring框架的优秀架构和设计思想,而且还能从spring优雅的实现源码...

    Spring技术内幕:深入解析Spring架构与设计原理(第1部分)

    国内第一本基于Spring3.0的著作,从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透Spring框架的优秀架构和设计思想,而且还能从Spring优雅的实现源码...

    Spring技术内幕:深入解析Spring架构与设计原理(第一部分)

    国内第一本基于Spring3.0的著作,从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透Spring框架的优秀架构和设计思想,而且还能从Spring优雅的实现源码...

    java8源码-Spring5:Spring5新特性

    IOC思想基于IOC容器完成,IOC容器底层就是对象工厂。 Spring提供IOC容器实现的2种方式: BeanFactory:IOC容器基本实现,Spring内部使用接口 加载配置文件时候不会创建对象,获取对象时后才会创建。 ...

    Spring技术内幕:深入解析Spring架构与设计原理 2/2

     国内第一本基于spring3.0的著作,从源代码的角度对spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透spring框架的优秀架构和设计思想,而且还能从spring优雅的实现源码...

Global site tag (gtag.js) - Google Analytics