springIOC

原创 2017年10月18日 16:03:02
强调!!!以下只是我个人总结,如有错误的地方请文明指出微笑,如有其他看法请耐心讨论微笑,如有看不懂可以参考其他有关博客微笑,最后如有想喷的出门左转不谢。微笑    

1、控制反转:依赖对象的获得被反转了。
2、许多程序都是有两个以上的类通过彼此合作来实现业务逻辑的,这使得每个对象都要引用它所依赖的对象的引用,如果这个获取对象的过程要靠自身实现(一个类中引用了另一个类),那么会导致代码的高度耦合并且难以测试。
3、依赖控制反转的方式有很多,其中spring中的IOC容器是实现这个模式的载体。他可以在对象生成或初始化时直接将数据注入到对象中,也可以通过将对象的引用注入到对象数据域中的方式来注入对方法调用的依赖。这种依赖注入是可以递归的,对象被逐层注入。
4、spring IOC容器中有两个主要的容器系列:BeanFactory,用来实现容器的基本功能;ApplicationContext,应用上下文,在简单容器的基础上增加了许多面向框架的新特性。
5、BeanDefinition:是spring在提供基本的IOC容器的接口定义和实现的基础上,由spring定义的BeanDefinition用来管理spring中各种对象以及他们之间的依赖关系。对于IOC他是依赖反转模式中管理对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构。
6、BeanFactory接口<——HierarchicalBeanFactory接口<——ConfigurableBeanFactory接口:BeanFactory接口定义了基本的IOC容器的规范,包括getBean()(从容器中获取Bean);HierarchicalBeanFactory接口继承了BeanFactory接口后,增加了getParentBeanFactory()(使得BeanFactory具备了双亲IOC容器的管理功能);ConfigurableBeanFactory接口继承了HierarchicalBeanFactory接口后增加了定义对BeanFactory的配置功能,例如setParentBeanFactory()(设置双亲IOC容器)、addBeanPostProcessor()(配置Bean后置处理器)。
7、BeanFactory接口<——ListableBeanFactory接口/HierarchicalBeanFactory接口<——ApplicationContext接口<——ConfigurableApplicationContext接口/WebApplicationContext接口
在ListableBeanFactory接口中细化了许多BeanFactory接口的功能,比如定义了getBeanDefinitionName()接口方法。ApplicationContext接口通过继承了MessageSource、ResourceLoader、ApplicationEventPublisher接口。
8、BeanFactory接口有如下接口方法:
接口里定义了一个变量String FACTORY_BEAN_PREFIX = "&";
  这是用来区分是获取FactoryBean还是FactoryBean的createBean创建的实例.如果&开始则获取FactoryBean;否则获取createBean创建的实例.
我们来看下定义的方法:
  a, 获取bean,这边可以实现单例,原型
    Object getBean(String name) throws BeansException; 可以用别名查找哦
    <T> T getBean(String name, Class<T> requiredType) throws BeansException;
    <T> T getBean(Class<T> requiredType) throws BeansException; 这边的类型可以是接口或者子类,但不能是null
    Object getBean(String name, Object... args) throws BeansException;
  b, 判断是否包含bean.陷阱出现:这边不管类是否抽象类,懒加载,是否在容器范围内,只要符合都返回true,所以这边true,不一定能从getBean获取实例
    boolean containsBean(String name);
  c, 单例,原型,bean类型的判断
    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
    boolean isTypeMatch(String name, Class<?> targetType) throws NoSuchBeanDefinitionException;用来查询指定了名字的Bean的Class类型是否是特定的Class类型
  d, 获取bean 的类型,别名
    Class<?> getType(String name) throws NoSuchBeanDefinitionException;
    String[] getAliases(String name);查询Bean的别名
感觉乱乱的,不知道在写什么,好吧。。。。微笑



Spring(一)Spring IOC容器配置详解——基于xml文件形式

一、Spring         Spring是一个轻量级的框架,相当于一个平台性质,大大简化了Java企业级应用的开发,提供了强大的、稳定的功能。Spring框架大约由20个功能模块组成,这些模块被...
  • qq_16313365
  • qq_16313365
  • 2015年01月24日 20:19
  • 1639

Spring IOC(整体流程)

IOC容器基本分成BeanFactory和ApplicationContext两类 BeanFactory是基本,ApplicationContext多用在框架 继承结构如图: BeanFact...
  • zly9923218
  • zly9923218
  • 2016年05月03日 00:07
  • 1686

Spring框架IOC容器和AOP解析

转载自:http://www.cnblogs.com/xiaoxing/p/5836835.html 主要分析点: 一、Spring开源框架的简介  二、Spring下IOC容器...
  • cq340321
  • cq340321
  • 2017年03月09日 21:06
  • 242

springIOC的理解

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家...
  • yhaipeng911
  • yhaipeng911
  • 2016年09月09日 23:08
  • 101

简明扼要谈Spring IOC的好处

简明扼要谈Spring IOC的好处   IOC:控制反转,它是不是什么技术,它是一种设计模式。所谓控制反转就是由容器控制程序间的关系,而不是传统实现中,由编程代码直接操控。说白了就是由容...
  • u014802309
  • u014802309
  • 2015年01月06日 10:07
  • 1884

spring 如何取的IOC容器得到里面的对象进行操作

import java.util.HashMap; import java.util.Map; import org.springframework.context.ApplicationContex...
  • whiteForever
  • whiteForever
  • 2015年08月31日 11:04
  • 250

02.Spring IOC源码深度解析之容器的基本实现

在搭建完Spring源码阅读环境后,大家比较困惑的应该就是从哪里开始入手阅读Spring源码了。众所周知Spring的两大特性为IOC和AOP,那我们先以IOC为例跟进Spring源码。IOC(Inv...
  • RobertoHuang
  • RobertoHuang
  • 2017年12月23日 17:26
  • 108

springIOC容器(一)

IOC容器译为:控制反转 亦或 依赖注入 著名的好莱坞原则“Don’t call us, we will call you”恰当的表达了”反转”的意味带着疑问: 为什么需要IoC? IoC的具体意...
  • u013095337
  • u013095337
  • 2016年12月16日 17:15
  • 146

浅谈spring的Ioc和DI

很久没回来更博了,前阵子琐事多人又比较烦躁,就没过来.今天又空就回来写写的东西,今天打算浅淡一下spring核心技术:(控制反转)IOC和(依赖反转)DI.以个人的经历来看,只要你去面试并且你使用过s...
  • JY_He
  • JY_He
  • 2016年06月30日 11:33
  • 1038

SpringIOC 实例化Bean的流程

IoC容器的初始化就是含有BeanDefinition信息的Resource的定位、载入、解析、注册四个过程,最终我们配置的bean,以beanDefinition的数据结构存在于IoC容器即内存中。...
  • qq_16681169
  • qq_16681169
  • 2016年03月05日 10:56
  • 340
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:springIOC
举报原因:
原因补充:

(最多只允许输入30个字)