spring讲解3--IOC容器讲解

spring讲解3–IOC容器讲解

概念

IOC 其思想是反转资源获取的方向。不是主动的创建对象,而是从spring 容器中 拿所需要的对象。 容器主动的将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式接受资源,这种行为也被称为查找的被动形式。
DI 即组价以一些预先定义好的方式(setter方法)接受来自如容器的资源注入。

从代码上面分析概念:

class A{}
classB{
	private A a;
	public void setA(A a){
		this.a = a;
	}
}

平时的代码实现为:

A  a = getA();
B a = getB();
b.set(a); 此时创建关系

加入IOC容器时,此时使用容器进行对象的注入。(从容器中获取B对象,并使B对象的a属性被赋值为容器中A对象的引用)

B  b = getB(); //此时容器自动将A 自动注入到B中。

ClassPathXmlApplicationContext 类分析

在代码中光标在ApplicationContext上面,使用 ctrl + t,可以出现类所有的相关类。

在这里插入图片描述

从上图中发现,ApplicationContext为接口,下面有两个实现类。ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。
ApplicationContext的主要实现类: (1)ClassPathXmlApplicationContext:从类路径下加载配置文件
(2)FileSystemXmlApplicationContext 从文件系统中创建文件。

ConfigurableApplicationContext 扩展于ApplicationContext,新增加两个主要方法:refresh()和close(),让ApplicationContext具有启动、刷新和关闭上下文的能力。

spring容器

Spring提供了两种类型的IOX容器的实现
---BeanFactory  IOC容器的基本实现,面向框架本身进行编程,是spring框架的基础设施,面向spring本身。
---ApplicationContext: 是BeanFactory的子接口。面向程序开发者。
从上面看,其实分为四层。
BeanFactory ---> ConfigurableApplocationContext--->ApplicationContext -->  ClassPathXmlApplicationContext

在这里插入图片描述

获取对象方式

Object helloWorld = (HelloWorld)als.getBean("helloWorld"); //通过类指定的id获取对象
Object helloWorld2 = als.getBean("helloWorld",HelloWorld.class); //通过类名和id两者进行指定
Object helloWorld1 = als.getBean(HelloWorld.class); //直接通过类获取对象  
!!!第二种方式进行对象创建的过程中,如果配置文件中出现bean指向同一个Class的时候,此时会出现异常。如:
	<bean id="helloWorld" class="com.atspring.beans.HelloWorld">
		<property name="name" value="spring"></property>
	</bean>
	<bean id="helloWorld1" class="com.atspring.beans.HelloWorld">
		<property name="name" value="spring"></property>
	</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值