Spring-IoC[一] 什么是IoC

265 阅读2分钟

1.什么是IoC容器

1.什么是容器

 1.为对象运行提供环境
 2.管理着整个对象的生命周期
 3.支持查找以及依赖决策

2.什么是IoC容器

1.IoC即 控制反转 将创建对象的权力交给容器,用户只需要声明和调用->不需要手动创建对象
2.DL 依赖注入 容器来管理用户声明的关系->不需要手动set,ioc的实现形式
3.主要过程:   资源的感知定位,解析,注册
             BeanDefinition的管理,增强
             Bean对象的实例化,初始化
             Bean对象依赖的管理,及注入

3.IoC容器和spring IoC容器

1.能够实现IoC定义都可以称为IoC容器,不过spring代表的比较好
2.JavaSE中 JavaBeans和Java ServiceLoader(SPI) JNDI 都可以看做IOC容器
    1.JavaBeans的使用和定义满足IoC容器的控制和依赖的概念
    2.SPI 把Class的定位,访问,加载,创建都交给JVM来做,也可以看做IoC容器
    3.JNDI通过目录,帮助我们去找查找资源,IoC通常靠名称(定义的id)
  JavaEE中 EJB是传统实现和Servlet依赖JNDI
  开源 Apache Avalon 已经停更了/PicoContainer(spring依赖注入的灵感来自于它)
          Google Guice 轻量级框架
  当然还有无可置疑的spring Framework

4.如何看待spring IoC容器

1.对于spring IoC来说 ioc容器是一种产品,除了基础能力的ConfigurableApplicationContext容器,spring提供了各种各样的产品来适应不同的使用场景
2.spring ioc容器 提供高度的集成性和可扩展性
3.spring的目的是一个生态,是全家桶,而非单一框架,为企业级应用提供一整套解决方案,这就势必导致,这一整套框架变重,所以你要知道你用的是spring 提供的哪一个IoC容器,并且默认提供了那些支持
4.spring适合企业级-业务开发,简洁,高效,易用,不适合中间件/组件,的开发

2.为什么使用Spring IoC容器

1.保姆式框架,使用简单,学习成本低
2.强大的扩展能力,提供了太多的可能,beanFactory和BeanPostProcessor机制
3.强大的生态,集成几乎所有的主流框架,同时新兴的框架又提供对spring的支持
4.广大的用户,你出现的问题,总有人出现过,找到解决方案的速度更快
5.其他的IoC容器,要么功能补全,要么学习成本高

3.如何使用Spring IoC容器

1.web容器的监听器

<listener> 
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>

</listener>

传统web容器方式是通过启动web容器->启动webListener->创建IoC容器

2.springboot方式

application class main方法 SpringApplication.run(thisClass)

springboot启动->applicationClass main方法->springboot listener,initlizer->spring cloud体系的Ioc父容器->当前应用程序的子IoC容器->启动并绑定tomcat