Spring实战(第三版)—学习笔记分享
最近在看《Spring实战(第三版)》第三版,很好的一本书。总结了一些基础笔记,分享一下:
一:控制反转
例子:
PersonDaoBean 是在应用内部创建及维护的。所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器(Spring)负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 要实现控制反转,就得靠依赖注入。
二:依赖注入(DI):
所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean 类可以改成如下:
所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。
实例化Spring容器常用的两种方式:
方法一:在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
方法二: 在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\\beans.xml“});
Spring的配置文件可以指定多个,可以通过String数组传入。
三:Bean的作用域
singleton
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如: 如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下: <beans default-lazy-init="true“ ...>
.prototype
每次从容器获取bean都是新的对象
request
.session
.global session
四:Bean何时被实例化??
要验证何时被实例化,只要在类中的默认构造函数中输出一句话即可 单例模式下:默认Spring容器初始化时业务bean就被实例化。如果在<bean lazy-init="true">
,则不会被初始化,延迟了实例化。 如果<bean scope=“prototype”>
,则在调用getBean()时实例化
本文转载自异步社区。
原文链接:https://www.epubit.com/articleDetails?id=NC7E3EF90CF000001D1811230301019D7
- 点赞
- 收藏
- 关注作者
评论(0)