前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring 记录(一) --《spring解密》

Spring 记录(一) --《spring解密》

原创
作者头像
猎户星座1
修改2020-07-03 10:31:07
4560
修改2020-07-03 10:31:07
举报
文章被收录于专栏:Java Study

IOC 控制反转(DI 依赖注入)

将业务对象的创建主动权从我们自己交到了spring ioc 容器的手上。用的时候直接 Autowired 注入进去(感觉有点像Java 内存分配回收的出发点,将创建对象和回收 不要对象 垃圾交给ivm去 处理)

带给我们什么:帮助我们解耦对象间依赖关系的的对象绑定方式。

ioc容器 BeanFactary

Spring 提供两种容器 :BeanFactary 和ApplicationContexBeanFactory

BeanFactary 使用的为lazy-load 懒加载的方式,启动速度初期较快。

ApplicationContext 继承BeanFactary,提供BeanFactary 的所有实现,要求加载时一起加载,初始化时比较慢,要求的资源会多。现在我们用的ioc 容器为ApplicationContext

ioc容器实现功能 ,分为两个部分,容器启动和Bean的实例化。

一个bean 的 生命周期,实例化过程。

当一个Java类 交给Spring 容器去处理,并经过 Spring 对象的生命周期,才叫 bean 或者可以说是component。

自己也以为 当Java类 加上 注解或者 Spring 配置文件 xml <bean id ="" > 配置后 ,Spring 的ioc 容器会 直接实例化 这个对象,中间的过程其实是不清除的,在听公开课老师讲,spring的循环依赖时学习到了一个bean 从加载到 ioc容器到实例化这个对象的过程。

当Java类 确定为要交给 spring 容器去管理时

--------首先会产生一个BeanDefintion 对象,它记录了该bean 的各种配置(当年在配置bean 的时候 的属性,如 是否进行懒加载,bean 的作用域是什么 singleton、prototype、session、request)及 它对应的类 (com.xxx.xxx.controller.xxController)

---------然后会有一个BeanDefintionMap 集 去存放 所以加载bean 的类名 为key ,value 为该BeanDefintion对象,并将bean的类名称加到到一个list 中 。

--------然后会遍历这个list 中的各自名称,根据名称作为key ,得到该 BeanDefintion ,然后判断 如果为bean的作用域为单例啊 是否是非懒加载啊 ,则 new 实例化(此时 才会真正的实例类 ) 并加入 单例池中,如果为原型模式则不实例化。

此时老师也指出了 在这个过程中 如果程序员 将 map 中的 BeanDefintion 与它对应的类换成 其他的类的话,则虽然是 加载的这个bean 但实际上实例化的为另一个。 说是 对spring 的扩展,有种奇技淫巧的感觉,,

先发出去,督促自己整理下去

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IOC 控制反转(DI 依赖注入)
  • 一个bean 的 生命周期,实例化过程。
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档