【 从零到精通Spring学习笔记(一)Bean的基本配置】

37 阅读3分钟

# Spring笔记(一)

1.bean

**作者是根据黑马课程来学习的,所以作者会引用了黑马课程中的知识**

1.1: bean的基本配置

<bean id=""(定义bean的名字) name=""(可以写多个,定义bean的别名(防止程序员命名习惯不同) ) class=""(bean的全类名,要找到bean) scope=""(选择单例还是多例,singleton单例,prototype多例) />

image.png

1.2: bean的实例化

1.构成方法

实现类Dao中提供空参构造,配置文件xml写入,即可将Dao注入IOC容器中

image.png

2.静态工厂

定义实现类工厂DaoFactory,提供静态方法getDao(例子如图)

image.png

配置文件中写入

image.png

注意:使用静态工厂所创建的bean只有factory-method这个中的bean,而本身类工厂DaoFactory不是bean

3.实例工厂

定义实现类工厂DaoFactory,提供方法getDao(不是静态的),你首先要想到如果不是静态方法 是不是不能直接调用类里面的方法

image.png

第一个写法:就是在配置文件中先配置工厂DaoFactory这个bean,有了DaoFactory,是不是可以再使用方法实现Dao 的bean 写法:1. 完成DaoFactory bean的实现 2. <bean id="Dao" factory-method="依旧写的是方法getDao" factory-bean="指定工厂的bean"

image.png

这个写法太麻烦了,还需要创建一个单独的BeanDaoFactory,只为提供工厂bean,并且方法名是你自己规定的 注意:这里创建了两个bean:DaoFactory,Dao

第二个写法:我们可以在类工厂DaoFactory中实现一个接口FactoryBean<>(这个接口是一个泛型,根据你需要构建哪个bean,那么你就写该bean的类名) 并且重写接口里面的方法(有三个)

1.getObject() 这个方法的返回类型就是你泛型所指定的类型,那么你就给它一个放回对象即可 (return new Dao() )

2.getObjectType() 这个方法的返回类型是Class<?> 你看到这个类型 根据getObject() 那么你放回(return Dao.class)

3.isSingleton() 这个方法的返回类型是布尔类型 你看到这个方法名应该知道 ,你放回true那么构建的Bean:Dao是一个单例的 false:多例 这个方法可以省略不写

image.png

说完了方法,那么配置文件呢 : 注意这里的bean依旧是两个

image.png

4.bean的生命周期

生命周期:从创建到销毁

生命周期控制:如果我们需要给bean初始化后给bean做一些操作(提示初始化成功) 还有对bean即将销毁时做对应操作(提示即将销毁)那该怎么办呢

这两个方法你需要自己定义

image.png

image.png

简单方式:可以在类中实现InitializingBean,DisposableBean接口 重写里面的方法,可以省略 init-method,destroy-method

image.png

image.png

image.png ** 生命周期:

1.初始化容器:

         1.1创建对象(对对象进行内存分配)

         1.2执行构造方法

         1.3执行属性注入(set操作)

         1.4执行bean初始化方法

2.使用bean

3.关闭/销毁容器**