spring容器和上下文的理解
spring框架现在使用的很多,这说明有其独特之处----依赖注入,很简单的四个字,在我们需要对象的时候,spring就可以给我们提供所需要的对象,对象的创建、销毁、管理这些都不需要我们去考虑,只需要考虑的业务的实现就行---开发的时候挺省事,也提高了开发效率,所以才有这么多人在用它开发各种web程序。
如果仅仅是简单的用spring,俗称拿来主义,倒也不用去了解spring的原理,如果你想知道spring的为什么在我们需要的时候给我们提供对象?对象是从哪里来的?它是怎么管理对象的?等这些的话,就需要花点时间去研究一下spring的源代码了,顺便可以学习下大神的代码,这里先简单的陈述下spring的主要思想,后续有时间分享下源代码阅读。
spring的核心那就是容器,类似工厂的地方,应用程序中那么多对象的产生销毁,肯定需要一个地方来专门处理--容器,有一个很大家很熟悉的容器,tomcat,它是servlet的web容器,容器负责了对象整个的生命周期--------创建、装配、销毁,有一个专业的术语来形容spring容器----IOC容器,IOC是指我们在开发的过程中不用管对象的创建这些,都交给容器去处理,等于说把控制权交给了容器(控制反转),这里要说明一下,IOC不是spring专有的,还有很多通过IOC容器的框架。
光有spring容器也没什么用,容器说到底只是一个管理对象的空间,就像一个没有图纸的工厂,不知道怎么生产产品,这就涉及到了spring应用上下文,说的简单点就是容器的对象,是对spring容器抽象的实现,我们常见的ApplicationContext本质上来说是一种维护Bean的定义和对象之间协作关系的高级接口,spring的核心是容器,有且不止一个容器:
① AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式;
② ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式;
③ FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件;
④ AnnotationConfigWebApplicationContext:专门为web应用准备的,适用于注解方式;
⑤ XmlWebApplicationContext:从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。
有了以上理解,问题就很好办了。你只要将你需要IOC容器替你管理的对象基于xml也罢,java注解也好,总之你要将需要管理的对象(Spring中我们都称之问bean)、bean之间的协作关系配置好,然后利用应用上下文对象加载进我们的Spring容器,容器就能为你的程序提供你想要的对象管理服务了
参考:https://www.cnblogs.com/chenbenbuyi/p/8166304.html