专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Spring原理和实现机制

Spring原理和实现机制

更新时间:2022-06-02 09:20:58 来源:动力节点 浏览2450次

1.关于spring容器:

Spring的核心是spring容器,该容器负责管理spring中的java组件。大家如果想了解更多知识,可以关注一下动力节点的Spring框架教程,里面有更高丰富的知识等着大家去学习。

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最基本的接口就是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原理和实现机制”的介绍,大家如果想学习更多Java知识,可以关注一下动力节点的Java在线学习,里面的课程内容从入门到精通,细致全面,通俗易懂,适合没有基础的小白学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>