Spring实战(第三版)—学习笔记分享

举报
且听风吟 发表于 2020/02/15 14:23:50 2020/02/15
【摘要】 最近在看《Spring实战(第三版)》第三版,很好的一本书。总结了一些基础笔记,分享一下: 一:控制反转例子: PersonDaoBean 是在应用内部创建及维护的。所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器(Spring)负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 要实现控制反转,就得靠依赖注入。 ...

最近在看《Spring实战(第三版)》第三版,很好的一本书。总结了一些基础笔记,分享一下:

     

一:控制反转

例子:

image.png

     

PersonDaoBean 是在应用内部创建及维护的。所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器(Spring)负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 要实现控制反转,就得靠依赖注入。

     

二:依赖注入(DI):  

所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean 类可以改成如下:

image.png

     

所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

     

实例化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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。