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销毁方法
04IOC相关内容
于 2023-05-11 10:43:16 首次发布
文章详细介绍了Spring中bean的基础配置,包括id、class、name和scope属性,强调bean默认为单例模式及其可能的线程安全问题。此外,还提到了bean的实例化方式(构造方法、静态工厂、实例工厂)以及bean的生命周期,包括初始化、使用和销毁阶段。
摘要由CSDN通过智能技术生成