Spring笔记(一)
目录
作者是根据黑马课程来学习的,所以作者会引用了黑马课程中的知识
1.Bean
1.1: Bean的基本配置
注:笔记是连续发布,不要奇怪标题数字
<bean id=""(定义bean的名字) name=""(可以写多个,定义bean的别名(防止程序员命名习惯不同) ) class=""(bean的全类名,要找到bean) scope=""(选择单例还是多例,singleton单例,prototype多例) />
1.2: Bean的实例化
1.构成方法
实现类Dao中提供空参构造,配置文件xml写入<bean id="(取名dao)" class="com.*.Dao" />,即可将Dao注入IOC容器中
2.静态工厂
定义实现类工厂DaoFactory,提供静态方法getDao(例子如图)
配置文件中写入<bean id="dao" class="com.*.DaoFactory" factory-method="(这里面写的就是你需要声名的bean 即静态方法getDao)" />
注意:使用静态工厂所创建的bean只有factory-method这个中的bean,而本身类工厂DaoFactory不是bean
3.实例工厂
定义实现类工厂DaoFactory,提供方法getDao(不是静态的),你首先要想到如果不是静态方法 是不是不能直接调用类里面的方法
第一个写法:就是在配置文件中先配置工厂DaoFactory这个bean,有了DaoFactory,是不是可以再使用方法实现Dao 的bean 写法:1.<bean id="DaoFactory" class="com.*.DaoFactory" /> 完成DaoFactory bean的实现 2. <bean id="Dao" factory-method="依旧写的是方法getDao" factory-bean="指定工厂的bean"
这个写法太麻烦了,还需要创建一个单独的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:多例 这个方法可以省略不写
说完了方法,那么配置文件呢 : <bean id="Dao" class="com.*.DaoFactory" /> 注意这里的bean依旧是两个
4.Bean的生命周期
生命周期:从创建到销毁
生命周期控制:如果我们需要给bean初始化后给bean做一些操作(提示初始化成功) 还有对bean即将销毁时做对应操作(提示即将销毁)那该怎么办呢
<bean id="" class="" init-method="(写类中对应初始化后的方法)" destroy-method="(销毁前所要执行的方法)"/> 这两个方法你需要自己定义
简单方式:可以在类中实现InitializingBean,DisposableBean接口 重写里面的方法,可以省略 init-method,destroy-method
生命周期:
1.初始化容器:
1.1创建对象(对对象进行内存分配)
1.2执行构造方法
1.3执行属性注入(set操作)
1.4执行bean初始化方法
2.使用bean
3.关闭/销毁容器