spring容器和上下文的理解
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
最新文章
- Entity Framework 6 Recipes 2nd Edition(13-2)译 ->; 用实体键获取一个单独的实体
- Python学习笔记1——Python基础
- Linux远程传输命令之scp使用方法
- mysql入门教程
- React Native 的高度与宽度设置
- [转]jQuery UI Dialog Modal Popup Yes No Confirm example in ASP.Net
- VMware中第一次启动mac遇到的错误及解决方案
- [WinForm] 使用 WebBrowser 操作 HTML 頁面的 Element-摘自网络
- Python 学习之urllib模块---用于发送网络请求,获取数据(5)
- LeetCode(2) || Add Two Numbers &;&; Longest Substring Without Repeating Characters
- phpstudy apache 刚启动便停止
- Oracle 空间管理
- mac链接linux终端,shell脚本发布代码
- GMP大法教你重新做人(从入门到实战)
- Leetcode 28——Implement strStr()
- 安全研究 | Jenkins 任意文件读取漏洞分析
- mysql 设置skip_name_resolve参数 日志 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode
- 随手记一个漂亮的code
- 使用IdentityServer4,在一个ASPNetCore项目中,配置oidc和api的AccessToken两种认证授权
- [bcc32 Error] typeinfo.h(154): E2367 Can't inherit RTTI class from non-RTTI base 'exception'