spring原理机制

作者: 白首倾盖 | 来源:发表于2018-04-15 18:18 被阅读66次

1,关于spring容器:

Spring的核心是spring容器,该容器负责管理spring中的java组件。

ApplicaTIonContext ctx = new ClassPathXmlApplicaTIonContext("xxx.xml");//实例化容器,容器会自动预初始化所有Bean实例。ApplicaTIonContext 实例正是Spring容器。

ctx.getBean("beanName");//获取bean

ApplicaTIonContext容器默认会实例化所有的singleton Bean

Spring容器并不强制要求被管理组件是标准的javabean。

2,Spring的核心机制:依赖注入。

  不管是依赖注入(Dependency Injection)还是控制反转(Inversion of Conctrol),其含义完全相同:

  当某个java实例(调用者)需要调用另一个java实例(被调用者)时,传统情况下,通过调用者来创建被调用者的实例,通常通过new来创建,

  而在依赖注入的模式下创建被调用者的工作不再由调用者来完成,因此称之为“控制反转”;创建被调用者实例的工作通常由Spring来完成,然后注入调用者,所以也称之为“依赖注入”。

3,依赖注入的方式:

    依赖注入一般常用两种:

  setter注入:IoC容器使用属性的setter方式注入被依赖的实例。

        <property name="" ref ="">

  构造注入:IoC容器使用构造器来注入被依赖的实例。                   

        <constructor-arg index="0" ref = "">

                   

  配置构造注入的时候《constructor-arg》可以配置index属性,用于指定该构造参数值作为第几个构造参数值。下标从0开始。

4,Spring容器和被管理的bean:

  Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他们都可以代表Spring容器。

  Spring容器是生成Bean实例的工厂,并管理Spring中的bean,bean是Spring中的基本单位,在基于Spring的java EE工程,所有的组件都被当成bean处理。

Spring容器类图

Spring容器:Spring最基本的接口就是BeanFactory,BeanFactory有很多实现类,通常使用XmlBeanFactory,对于绝大多数的JAVA EE项目,使用ApplicationContext。

ApplicationContext事件机制是基于观察者设计模式实现的。通过ApplicationEvent类和ApplicationListener接口,其中ApplicationEvent:容器事件,必须由ApplicationContext发布;ApplicationListener:监听器,可有容器内的任何监听器Bean担任。

容器中bean的作用域:

singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的bean将只有一个实例;

prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新实例;

request:对于每次HTTP请求中,使用request定义的bean都将产生一个新实例,只有在web应用程序使用Spring时,该作用域才有效;

session:同理

global session:同理

  注意:request和session作用域只在web应用中才生效,并且必须在web应用中增加额外的配置才会生效,为了让request,session两个作用域生效,必须将HTTP请求对象绑定到为该请求提供服务的线程上,这使得具有request和session作用域的Bean实例能够在后面的调用链中被访问。

获取容器的引用:

通常情况下:Bean无需访问Spring容器,而是通过Spring容器访问的,即使 需要手动访问Spring容器,程序也已通过类似下面的代码获取Spring容器 的引用。

  ApllicationContext cts = ClassPathApplalicationContext(“bean.xml”);

  但在一些极端的情况下,可能Bean需要访问Spring容器。Spring提供另一种方法访问Spring容器:实现BeanFactoryAware接口的Bean,拥有访问Spring容器的能力,实现BeanFactoryAware的Bean被容器实例化后,会拥有一个引用指向创建他的BeanFactory。BeanFactoryAware只有一个方法setBeanFactory(BeanFactory beanFactory)该参数指向创建他的BeanFactory。

相关文章

  • Spring AOP内部调用失效问题

    Spring AOP基本原理 Spring AOP是基于动态代理机制实现的,通过动态代理机制生成目标对象的代理对象...

  • spring原理机制

    1,关于spring容器: Spring的核心是spring容器,该容器负责管理spring中的java组件。 A...

  • 2019自己遇到的面试题(java后端)

    voliatle 原理及特性 spring ioc 含义及使用 spring aop 变成含义及使用 gc机制 s...

  • Spring事务传播机制

    1.Spring事务执行的原理; Spring事务使用AOP的机制实现,会在@Transcactional注解修饰...

  • 2017年面试问题

    垃圾回收机制 spring MVC设计模式 JVM内核 类加载机制几种类型以及原理 currenthashmap ...

  • Java 反射 reflection

    spring源代码,其基本原理如依赖注入、aop、以及xml技术,动态反射机制 Reflection 学习反射原理...

  • 解析

    SpringBoot异常处理机制 再看源码之前总结阐述下原理,Spring通过@ControllerAdvice和...

  • 框架基础面试知识

    (一)Spring mvc 工作机制(原理): DispatcherServlet主要用作职责调度工作,本身主要用...

  • Spring事务(一)

    Spring事务的实现原理: Spring事务底层是基于数据库事务和AOP机制的 ⾸先对于使⽤了@Transact...

  • Java动态代理

    Spring的核心AOP的原理就是java的动态代理机制。所以,我们需要好好将java动态代理机制进行梳理。 ...

网友评论

    本文标题:spring原理机制

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