spring应用上下文的理解

spring应用上下文的理解

#容器

什么叫容器呢?

如果你想要一个手机,好这时候spring就给你一个手机.你想要使用的对象,spring就会给你,但是现在我们就会问那spring给的对象来自于哪里呢?

spring要负责的工作很多,那么多对象的创建管理都是它在负责,那肯定会有一个地方是负责造对象的.造手机的叫工厂,而spring造对象的不叫所谓的工厂,如果叫工厂有点low,所以给出一个高大尚的名称--容器.所以现在对容器这个概念有一个新的认识了吧.

容器是spring框架实现的功能的核心.(spring的核心是容器,这没有错,但是容器并不唯一,框架本身提供了多个容器的实现,具体的后面会讲).因为没有对象,你无法实现你想要的任何功能.

如果认为造对象是容器的全部功能那你就大错特错了,因为它比你想象的要强得多,它负责对象整个的生命周期的管理包括:创建,装配,销毁.

#IOC容器

容器中经常会用到一个术语就是IOC容器.全称:Inversion of Control.这是一种设计思想

怎么理解IOC呢?

在java开发中,将自己设计好的对象交给容器控制,而非在对象的内部控制.

那么问题来了,是谁控制谁呢?控制的是什么?为何是反转而不是正转,左转,右转啥的?哪些东西发生了反转?这都是问题

##第一个问题:

之前我们所学的对象是这样生成的:我们在对象的内部直接new来创建对象,是通过程序去主动创建对象.而IOC就不一样了,它有一个专门的容器来创建对象,通俗的讲就是它想创建什么对象,它说了算.

而现在谁控制谁这个问题当然就简单了,当然就是IOC控制对象.

##第二个问题:

控制的是什么呢?当然是外部资源一获取咯!(外部资源是一个广泛的定义:不只是对象,如文件啊,图片啊什么的这些)

##第三个问题:

为什么要中反转呢?只是Inversion的翻译吗?当然不是的.

在以前的设计中,由我们自己在对象中主动控制去直接获取依赖对象,也就是正转.而反转呢则是由容器来完成创建及注入依赖对象;因为这是一个被动的过程,我们并没有要求它(容器)这么做.而对象只是被动的接受依赖对象.

##第三个问题:

哪些东西发生了反转?

依赖对象获到被反转了.

所以汇成一句话就是:我们的应用程里不用再过对象的创建和管理对象之间的依赖关系了,这些都让IOC容器代劳吧.我们把对象的创建,管理的控制权都交给spring容器,这就是一种控制权的反转,至此我们就知道了为什么spring容器称之为IOC容器.

谁依赖于谁:当然是应用程序依赖于IoC容器;

为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

 

我们可以说spring容器是IOC容器,而不能说IOC容器就是spring容器.

基于IOC容器的框架还有很多.

好了现在理解spring这个概念之后,你也不能做什么,光有这个容器你也造出不对象对吧!

要容器造什么对象是由我们自己决定的,决定对象间依赖关系的也是我们自己,容器只是提供管理对象的空间而已.那么问题就出现了,我们怎么向容器中放入我们需要的对象呢?

这就讲到我们要讲的重点了.应用上下文

#什么是应用上下文呢?

重点话语来了哦!重点,重点,重点.说了好多遍了.

将你需spring帮你管理的对象放入容器的一种对象.可以理解为spring容器抽象的一种实现.

ApplicationContext是一维护Bean定义以及对象之间协作关第的高级接口.

## spring中容器的实现大概分为两种:

1.本身不常用的BeanFactory,这是最简单的容器,只能提供基本的DI功能.

2.就是继承了BeanFactory后派生而来的应用上下文.其抽象接口也就是ApplicationContext.他就能提供更多企业级的服务.如解析配置文本信息.

有了上下文我们就能向容器注册需要spring管理的对象了.对于上下文抽象接口,spring也为我们提供了多种类型的容器实现,供我们在不同的应用场景选择.

① AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式;

② ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式;

③ FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件;

④ AnnotationConfigWebApplicationContext:专门为web应用准备的,适用于注解方式;

    ⑤ XmlWebApplicationContext:从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。

 

 

这算是读后笔记吧:来源于:https://www.cnblogs.com/chenbenbuyi/p/8166304.html

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值