spring容器原理一

spring IOC使应用中依赖管理变得简单,所以的bean创建,以及当前bean所需要的另外类的实例都由容器来管理。

想像下,如果不用spring ioc。有业务类A,需要业务类B的实例。而业务类B需要业务类C的实例。这里如果业务类A为入口main方法,我们需要进行以下几个步聚完成A类的实例化:

1.手动创建C类实例

2.然后创建B类实例并将之前创建的C类实例插入到B的字段中

3.最后创建A的实例,并将B的实例插入到A类的字段中

可以想像实例化,并管理这些依赖的过程对于程序员来说,简直是灾难。如果后续C类又需要D类的字段,又需要改动这段初始化代码。

基于以上原因,我们想像下,这部分实例化及依赖管理能够由第三方管器来做,而程序员只需关心业务逻辑。

我们希望,第三方容器的引入对现有项目代码应该影响很小,因此可以考虑用专门的配置文件来做。这样对原有类没有任何侵入。

spring容器就是基于这样一目标而设计的。

spring有许多款容器供用户选择,如ApplicationContext,ClassPathXMLApplicationContext等。

spring 设计容器时,定义了一个beanFactory接口,定义了最常用的几个操作:getBean,containsBean,getType等。

而基于这个beanFactory,在设计实现时,原则上重用一些代码,这个可以用继承与组合。spring中,用继承来复用大量的代码。

beanFactory继承体系如下,此处只研究XmlBeanFactory这个分支:

beanFactory->AutowireCapableBeanFactory->AbstractAutowireCapableBeanFactory->DefaultListableBeanFactory->XmlBeanFactory

spring容器原理一

时间: 2024-11-05 13:30:31

spring容器原理一的相关文章

菜鸟学SSH(十四)——Spring容器AOP的实现原理——动态代理

之前写了一篇关于IOC的博客--<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大特性是IOC和AOP. IOC负责将对象动态的注入到容器,从而达到一种需要谁就注入谁,什么时候需要就什么时候注入的效果,可谓是招之则来,挥之则去.想想都觉得爽,如果现实生活中也有这本事那就爽歪歪了,至于有多爽,各位自己脑补吧:而AOP呢,它实现的就是容器的另一大好处了,就是可以让容器中的对象都享有容器中的公共服务.那么容器是怎么做到的呢?它怎么就能让在它里面的对象自动拥有它

spring容器IOC原理解析

原理简单介绍: Spring容器的原理,其实就是通过解析xml文件,或取到用户配置的bean,然后通过反射将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这些bean.下面是一段简单的模拟代码: [java] view plain copy package com.tgb.spring.factory; import java.util.HashMap; import java.util.List; import java.util.Map; import or

spring容器启动原理分析1

在项目的web.xml中配置 1 <listener> 2 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 3 </listener> 此配置为spring容器加载入口,因为其javax.servlet.ServletContextListener接口. 下面代码为ServletContextListener的源码: public i

Spring容器的简单实现(IOC原理)

引言:容器是什么?什么是容器?Spring容器又是啥东西?我给Spring容器一个对象名字,为啥能给我创建一个对象呢? 一.容器是装东西的,就像你家的水缸,你吃饭的碗等等. java中能作为容器的有很多,例如Map,List,数组.....还有好多 二.Spring 容器的核心就是一个Map集合(可能不是很准确,见谅!) Map<String, Object> 这个容器里根据key-value存放了好多键值对.假如你给一个String的key,就能获得相应的Object的对象,各位大佬,对Sp

Spring:源码解读Spring IOC原理

Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. IoC容器的初始化 1. XmlBeanFactory(屌丝IOC)的整个流程 2. FileSystemXmlApplicationContext 的IOC容器流程 1.高富帅IOC解剖 2. 设置资源加载器和资源定位 3.AbstractApplicationContext的refresh函数载入

spring容器

一.简介 spring容器是整个spring框架的核心,通常我们说的spring容器就是bean工厂,bean工厂负责创建和初始化bean.装配bean并且管理应用程序中的bean.spring中提供了两个核心接口:BeanFactory和ApplicationContext,ApplicationContext是BeanFactory子接口,它提供了比BeanFactory更完善的功能. 二.ApplicationContext的工作原理 先建立一个新的java项目,搭建好spring的开发环

菜鸟学SSH(十三)——Spring容器解析及简单实现

最近一段时间,"容器"两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交流.讨论,对于容器的理解也逐渐加深.理论上的东西终归要落实到实践,今天就借助Spring容器实现原理,简单说说吧. 简单的说,Spring就是通过工厂+反射将我们的bean放到它的容器中的,当我们想用某个bean的时候,只需要调用getBean("beanID")方法. 原理简单介绍: Spring容器的原理,其实就是通过解析xml文件,或取到用户配置的

Quartz与Spring集成 Job如何自动注入Spring容器托管的对象

在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法可以是普通类.很显然,第二种方式远比第一种方式来的灵活. 测试环境 Spring3 M2 quartz-2.1.7 我们要达到这样的效果 public class CancelUnpaidOrderTask implements Job { @Autowired private AppOrderService orderService; @Over

Spring IOC原理(初级版)

Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益. ------------------------------------------------------------↑ 以上都是废话,我也不懂 ↑   ↓ 下面是整体架构,可以略过 ↓ ----------------------