springioc容器

码农翻身 码农翻身     2022-08-01     158

关键词:

一、ioc容器

ioc (inversion of  control)即控制反转,把某一个接口选择实现类的控制权转移给Spring容器来管理。调用类对该实现类的依赖关系由ioc容器注入(DI),传统的应用程序我们都是在类内部创建依赖对象,而Spring采用依赖注入的方式即 DI ,从而降低了类与类之间的耦合度。

一般我们把BeanFactory称为ioc容器,把ApplicationContext称为应用上下文,是Spring的核心。

 

二、当Spring容器启动时,首先会读取配置文件中的相关信息,并在Spring容器中生成一份bean配置信息注册表(BeanDefinition),然后根据配置信息注册表实例化bean装配bean之间的依赖关系,然后将bean实例放入bean缓存池中供应用程序使用。bean缓冲池由HashMap实现的,以bean的beanName为键。

 

三、BeanFactory

继承关系

BeanFactory bf=new XmlBeanFactory(new ClassPathResource("beans.xml"));
bf.getBean("");
ResourcePatternResolver rpr=new PathMatchingResourcePatternResolver();
        Resource r=rpr.getResource("com/lq/ioc/beans.xml");
        BeanFactory bf=new XmlBeanFactory(r);

 

ApplicationContext

继承关系

ApplicationContext ctx =new ClassPathXmlApplicationContext("com/lq/ioc/beans.xml");

        ApplicationContext ctx =new FileSystemXmlApplicationContext("com/lq/ioc/beans.xml");

        ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"conf/beans1.xml","conf/beans2.xml"});

 

ApplicationContext和BeanFactory的区别:

1、ApplicationContext 在容器启动时会把所有单实例的bean放入缓冲池中,可以通过配置lazy-init=true来延迟加载,  BeanFactory则采用延迟加载的形式,在容器启动时并不会实例化bean,直到第一次加载的时候才去实例化bean.对于单实例的bean,ApplicationContext中每次取出来都是同一个,而BeanFactory则每次取出来的是不同的bean.

2、两者均支持BeanPostProcessor、BeanFactoryPostProcessor(后置处理器)的使用,但是BeanFactory要通过  addBeanPostProcessor(new MyBeanPost())来手动注册,ApplicationContext则不需要手动注册。

 

WebApplicationContext

只能在web环境中使用,从WebApplicationContext中可以获得ServletContext的引用,整个web应用上下文对象将作为属性放入ServletContext中,Spring提供一个工具类WebApplicationContextUtils中的getWebApplicationContext(ServletContext sc)可以获得WebApplicationContext实例。

继承关系

 由于 Web 应用比一般的应用拥有更多的特性,因此WebApplicationContext 扩展了ApplicationContext。WebApplicationContext 定义了一个常量ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,在上下文启动 时,WebApplicationContext 实例即以此为键放置在ServletContext 的属性列表中,因此我们可以直接通过以下语句从Web 容器中获取
WebApplicationContext:
WebApplicationContext wac = (WebApplicationContext)servletContext.getAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

 

在web.xml文件中的配置 

1、使用监听的方式
<
context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/student.xml, /WEB-INF/person.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
<context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>/WEB-INF/student.xml, /WEB-INF/person.xml </param-value>  
</context-param>  
  
<servlet>  
    <servlet-name>springContextLoaderServlet</servlet-name>  
    <servlet-class>org.springframework.web.context.ContextLoaderServlet </servlet-class>  
    <load-on-startup>1</load-on-startup>  
</servlet>  

 

springioc容器的实现。

控制反转是spring的重要概念。而实现控制反转的IoC容器具体又是如何实现呢。IoC容器的目的是能够管理系统中各个对象之间的关系和依赖,为了实现这个功能,spring框架对Bean做了进一步抽象BeanDefinition。IoC容器的种类当然不止一... 查看详情

spring入门篇——第2章springioc容器

第2章SpringIOC容器介绍SpringIOC容器的基本概念和应用2-1IOC及Bean容器       在IOC容器中,所有对象都称为bean    2-2Spring注入方式      查看详情

springioc容器源码流程

一、核心流程加载bean定义实例化1.执行Before实例化BeanPostProcessor.postProcessBeforelnstantiation2.执行构造方法3.执行After实例化BeanPostProcessor.postProcessAfterInstantiation 查看详情

springioc概念

SpringIoc是Spring框架的基础,本文会简单的介绍下SpringIoc。SprongIoc即控制反转,它是一种通过描述(在java中可以是XML或注解)并通过第三方去产生或获取特定对象的方式。SpringIoC容器1、SpringIoC容器的设计    SpringIoC... 查看详情

关于springioc容器

注:都是从net的各个角落找到的,如涉及到版权请联系我,君并无意冒犯。1,spring容器的三种加载方式:(1)FileSystemXmlApplicationContext这个方法是从文件绝对路径加载配置文件,例如:ApplicationContextctx=newFileSystemXmlApplicationContext(... 查看详情

[spring实战系列]配置springioc容器的bean

...理组成应用的bean。为了利用容器服务,必须配置运行于SpringIOC容器中的Bean。2.解决方案你可以通过XML文件,属性文件,注释甚至API来设置SpringIOC容器中的Bean。Spring允许你在一个或者多个bean配置文件中配置bean。对于简单的应用... 查看详情

springioc容器

一、ioc容器ioc(inversionof control)即控制反转,把某一个接口选择实现类的控制权转移给Spring容器来管理。调用类对该实现类的依赖关系由ioc容器注入(DI),传统的应用程序我们都是在类内部创建依赖对象,而Spring采用依赖... 查看详情

03.springioc容器-初始化

基本概念SpringIoC容器的初始化过程在监听器 ContextLoaderListener 类中定义。具体由该类的的 configureAndRefreshWebApplicationContext 方法实现,它包含了两个过程:配置过程刷新过程原理分析下面来看 configureAndRefreshWebAppl... 查看详情

从源码层面解析springioc容器

SpringIOC容器继承关系图              MessageSource支持消息国际化。ResouceLoader资源加载。BeanFactory创建Bean。ApplicationEventPublisher通知的所有与事件相匹配的监听器。Io 查看详情

springioc容器

1、IoC概述    控制反转(InverseofControl,IoC)是Spring容器的内核,AOP、声明式事务等功能都是在此基础上扩展的。所谓IoC就是通过容器来控制业务对象之间的依赖关系,而不是传统实现中,由代码直接操控。这也就... 查看详情

spring源码分析springioc容器之前生今世--defaultlistablebeanfactory源码解读

springIoc容器的实现,从根源上是beanfactory,但真正可以作为一个可以独立使用的ioc容器还是DefaultListableBeanFactory,因此可以这么说,DefaultListableBeanFactory是整个springioc的始祖,研究透它的前生今世对我们理解springioc的概念有着重要... 查看详情

springioc容器实现

1,Spring的两种IoC容器BeanFactory 基础类型的IoC容器;采用延迟初始化策略(容器初始化完成后并不会创建bean的对象,只有当收到初始化请求时才进行初始化);由于延迟初始化,因此启动速度较快,占用资源较少;ApplicationConte... 查看详情

springioc容器和aop

一、IOC(InversionofControl)容器:就是具有依赖注入(DependncyInjection)功能的容器,是可以创建对象的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控... 查看详情

springioc容器(代码片段)

IoC容器Spring容器是Spring框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为SpringBeans。通过阅... 查看详情

spring学习---springioc容器的初始化过程

【原文】https://www.toutiao.com/i6594400249429623304/SpringIOC容器的初始化过程简单来说,IoC容器的初始化是由refresh()方法来启动的,这个方法标志着IoC容器的正式启动。具体来说,这个启动包括BeanDefinition的Resouce定位、载入和注册三... 查看详情

springioc容器

核心技术发行版5.0.8这一部分的指导文档覆盖了所有的完全集成到Spring框架中的技术。这些技术中首要的便是Spring框架的控制反转(IoC)容器。Spring框架的IoC容器的全面的处理是与Spring的面向切面编程(AOP)的彻底实现紧密相关的。Spr... 查看详情

springioc容器(代码片段)

IOC(InversionofControl):控制反转1、谁控制谁:在之前的编码过程中,都是需要什么对象自己去创建什么对象,由程序员自己来控制对象,而有了IOC容器之后,就会变成由IOC容器来控制对象,2、控制什么:在实现过程中所需要的对... 查看详情

springioc容器-xml配置bean-bean的作用域

纯粹的SpringIOC容器中,bean的作用域有2中,用bean标签中的scope来标注,分别是singleton和prototypesingleton表示SpringIOC容器在初始化的时候,会创建此bean,每次请求的时候,返回的都是这个bean的实例(单例)prototype表示SpringIOC容器在... 查看详情