Spring IOC

详解IOC容器

在Spring Ioc容器的代表就是org.springframework.beans包中的BeanFactory接口,BeanFactory接口提供了IoC容器最基本功能。而org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现 (如针对web应用的WebApplicationContext)


图片.png
  • ClassPathXmlApplicationContext:ApplicationContext实现,从classpath获取配置文件;
BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml");
  • FileSystemXmlApplicationContext:ApplicationContext实现,从文件系统获取配置文件。
 BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");

ApplicationContext接口获取Bean方法:

  • Object getBean(String name) 根据名称返回一个Bean,客户端需要自己进行类型转换;
  • T getBean(String name, Class<T> requiredType) 根据名称和指定的类型返回一个Bean,客户端无需自己进行类型转换,如果类型转换失败,容器抛出异常;
  • T getBean(Class<T> requiredType) 根据指定的类型返回一个Bean,客户端无需自己进行类型转换,如果没有或有多于一个Bean存在容器将抛出异常;

IOC容器初始化原理

Bean的初始化是读取xml配置文件,解析xml文件并将bean的定义设置到Bean工厂中,我们可以让BeanFactory持有一个Map<String,Obejct>来完成bean工厂的功能,但是Bean的初始化是可以控制的,当lazy-init为true时,可以用到的时候再进行初始化。Spring通过让Bean工厂持有一个Map<String,BeanDefinition>,就可以什么时候想用哪个Bean就去对BeanDefinition进行初始化。

依赖注入DI

DI技术可以让对象从别处得到依赖项,而不是由它自己来构造,使用DI可以降低代码之间的耦合度,让代码更易于测试、更易读。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相...
    Theriseof阅读 2,854评论 1 24
  • 1- IOC的概念 IOC:也即控制反转,DI即依赖注入,控制反转IOC和依赖注入DI其实就是同个概念的两个不同...
    zhanglbjames阅读 3,045评论 1 3
  • 1.Spring IOC的初始化过程主要就是: 读取XML资源,将XML的元素解析为BeanDefinition,...
    Aimerwhy阅读 281评论 0 0
  • 这几天因为回到家中,舒服日子过惯了所以就忘记了自己该干什么了,这俩天确实过的让自己,好了言归正传,这个选题也是我不...
    小10阅读 649评论 0 1
  • 人生是什么?其实这是一个宏大的命题,古今多少先哲对其进行过思考与阐述,但谁又能说的清,道得明? -1- 对于我们芸...
    果然说阅读 327评论 5 4