论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Java后端07(Spring未完成)
Java后端07(Spring未完成)
美食家大橙子
金牌会员
|
2023-8-8 12:28:40
|
显示全部楼层
|
阅读模式
楼主
主题
937
|
帖子
937
|
积分
2811
Spring
涉及的设计模式:单例模式,简单工厂模式,代理模式,观察者模式,反射,注解。。。。。
Spring配置文件文件头
[/code][size=4]IOC 控制反转 ---- 将创建对象的权力由开发者交 给 Spring(缓解对象和对象之间的耦合度)[/size]
在传统模式下,对象的创建和赋值,都是由开发者自己手动完成,事实情况下,开发者只关心如何获取赋值好的对象,但是并不希望自己手动进行创建对象和赋值的事情(spring中所有的对象都是从实例工厂中自动创建,涉及到简单工厂模式)
[size=3]IOC底层原理[/size]
[list=1]
[*]xml解析(负责读取配置文件中 Bean 的相关信息)
[*]简单工厂模式(借助 BeanFactory 完成对象的实例化和返回)
[*]反射(不使用 new 创建对象的根本原因)
[/list][size=3]简单工厂模式[/size]
优点:
[list=1]
[*]设计与实现分离(开发者不需要关心对象是如何创建出来的)
[*]如果要拓展业务,并不会影响之前的业务,只需要拓展子类即可
[/list][size=3]IOC容器的两种实现方式[/size]
[list=1]
[*]BeanFactory:是Spring内部使用的接口,不建议给开发人员使用,该容器加载配置文件时,并不会创建响应对象,当开发者尝试获取对象的时候,才会创建对象(类似懒汉模式,具有延迟加载的特性)
[*]ApplicationContext:BeanFactory的子接口,一般由开发人员使用,该容器在加载配置文件的时候,就会创建对象(类似饿汉模式,不会出现并发安全问题,线程安全)
[/list][size=4]DI 依赖注入 ---- 在你配置好 bean 的情况下,由 Spring 帮你完成对象的赋值[/size]
优点:
[list=1]
[*]实现了接口和实现的分离
[*]组件化的思想,分离关注点,使用接口时,不再关注实现
[/list][size=4]Spring 的 bean 管理[/size]
[size=3]⭐Bean的声明周期[/size]
[list=1]
[*]常规五步声明周期
通过构造器创建 bean 实例 => 通过反射调用 setter 方法完成属性赋值 => 调用 bean 的初始化方法 => 获取 bean 实例 => 当容器关闭的时候, 调用 bean 的销毁方法
[*]
[/list][size=3]bean创建(IOC)[/size]
[list=1]
[*]基于xml的配置方式
结构分析
id 对象的唯一标识,通过 id 获取 bean 实例
class 对象所属类的完整路径,用于提供给 spring 借助反射完成的对象创建
scope 表示单/多实例模式
[code]<bean id="dog" >
<property name="name" value="dog01"/>
<property name="type" value="dogType01"/>
</bean>
<bean id="dog" >
<constructor-arg name="name" value="dog01"/>
</bean>
<bean id="dog" >
<property name="name"><null/></property>
</bean>
<bean id="dog" >
<property name="name">
<value><![CDATA[(-.-)]]></value>
</property>
</bean>
<bean id="dog" >
<property name="name" value="dog01" />
<property name="type" value="type01" />
</bean>
<bean id="person" >
<property name="dog" ref="dog" />
</bean>
<bean id="person" >
<property name="dog">
<bean >
<property name="name" value="dog01" />
<property name="type" value="type01" />
</bean>
</property>
</bean>
<bean id="person" >
<property name="dog" ref="dog" />
<property name="dog.type" value="type01" />
<property name="dog.name" value="dog01" />
</bean>
<bean id="dog" />
<bean id="person" >
<property name="hobbiesArray">
<array>
<value>games</value>
<value>coding</value>
</array>
</property>
<property name="hobbiesList">
<list>
<value>games</value>
<value>coding</value>
</list>
</property>
<property name="hobbiesSet">
<set>
<value>games</value>
<value>coding</value>
</set>
</property>
<property name="hobbiesMap">
<map>
<entry key="games" value="游戏" />
<entry key="coding" value="编码" />
</map>
</property>
</bean>
<bean id="factoryBeanDemo" />
复制代码
基于注解方式
属性值的注入(DI)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
美食家大橙子
金牌会员
这个人很懒什么都没写!
楼主热帖
【计算机视觉】图像检索
面了个腾讯拿28k跳槽出来的,真正见识 ...
全面数字化时代,国有大型银行如何走好 ...
MySQL实战45讲 11
【大话云原生】负载均衡篇-小饭馆客流 ...
K8S 性能优化 - OS sysctl 调优
【docker专栏2】CentOS操作系统安装Doc ...
解决Mac下腾讯会议无法使用OBS等虚拟摄 ...
Python入门自学进阶-Web框架——14、Dj ...
前端开发神器,Requestly使用
标签云
存储
服务器
快速回复
返回顶部
返回列表