美文网首页
Spring IOC

Spring IOC

作者: yaSecrets | 来源:发表于2018-01-08 23:39 被阅读0次

    详解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 IOC

          本文链接:https://www.haomeiwen.com/subject/ybyinxtx.html