04IOC相关内容

文章详细介绍了Spring中bean的基础配置,包括id、class、name和scope属性,强调bean默认为单例模式及其可能的线程安全问题。此外,还提到了bean的实例化方式(构造方法、静态工厂、实例工厂)以及bean的生命周期,包括初始化、使用和销毁阶段。
摘要由CSDN通过智能技术生成
4,IOC相关内容
4.1bean基础配置
bean基础配置,bean的别名配置,bean的作用范围配置
4.1.1bean的基础配置(id和class)
<bean id="" class=""/>
id:bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id值唯一
class:bean的类型,即配置的bean的全路径类名
class属性能不能写接口如BookDao的类全名呢?
不行,接口是没办法创建对象的
4.1.2bean的name属性
定义bean的别名,可定义多个,使用逗号(,)分号(;)空格()分隔
ref的属性值,也可是是另一个bean的name属性值,不过此处还是建议使用其id来进行注入
4.1.3bean的作用范围scope配置
singleton 单例
prototype 非单例
为什么bean默认为单例?
bean为单例的意思是在Spring的IOC容器中只会有该类的一个对象
bean对象只有一个就避免了对象的频繁创建与销毁,达到了bean对象的复用,性能高
bean在容器中是单例的,会不会产生线程安全问题?
如果对象是有状态对象,即该对象有成员变量可以用来存储数据的
所有请求线程共用一个bean对象,所以会存在线程安全问题的
如果对象是无状态对象,即该对象没有成员变量进行数据存储的
因方法中的局部变量在方法调用完成后会被销毁,所以不会存在线程安全问题
哪些bean对象适合交给容器进行管理?
表现层对象
业务处对象
数据层对象
工具对象
哪些bean不适合交给容器进行管理
封装实例的域对象,会引发线程安全问题,所以不适合
4.1.4bean基础配置小结
<bean
    id="bean的唯一标识"
    class="bean的类全名"
    scope="bean的作用范围,有singleton(默认)和prototype"
    name="为bean取的别名"
/>
4.2bean实例化
bean是如何创建的
实例化bean的三种方式,构造方法,静态工厂和实例工厂 FactoryBean
能访问到类中的私有构造方法,显而易见,Spring底层用的是反射
Spring底层使用的是类的无参构造方法
4.3bean的生命周期
bean生命周期是什么?
bean对象从创建到销毁的整体过程
bean生命周期控制是什么?
在bean创建后到销毁前做一些事情
close关闭容器
ApplicationContext中没有close方法,需要将ApplicationContext更换成ClassPathXmlApplicationContext
注册钩子关闭容器
调用ctx的registerShutdownHook()方法
初始化容器
 创建对象(内存分配)
 执行构造方法
 执行属性注入(set操作)
 执行bean初始化方法
使用bean
 执行业务操作
关闭/销毁容器
 执行bean销毁方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值