bean的三种创建方式:

方式一: 使用类构造器实例化对象

<!-- 方式一  使用构造器(无参数)实例化对象  -->

<bean id="bean1"

class="cn.itcast.spring.b_instance.Bean1" />

方式二: 使用静态工厂 静态方法,对对象实例化

<!-- 方式二 使用静态工厂实例化对象 -->

<!-- 调用 工厂的 factory-method 返回对象 -->

<bean id="bean2"

class="cn.itcast.spring.b_instance.Bean2Factory" factory-method="getBean2" />

方式三: 使用实例工厂 实例方法 对对象实例化

<!-- 方式三 使用实例工厂实例化对象 -->

<!-- 先实例化工厂 -->

<bean id="bean3Factory" class="cn.itcast.spring.b_instance.Bean3Factory" />

<!-- 再通过工厂对象的实例方法,构造目标对象 -->

<bean id="bean3" factory-bean="bean3Factory"

factory-method="getBean3" />

应用场景: 大多数情况,可以通过构造器直接实例化, 只有在对象构造过程非常复杂的情况下,才会采用工厂实例化的方式

bean的作用域:

Spring为Bean对象,提供五种作用域:

最常用 singleton 和 prototype 两种

Singleton (单例): 在一个BeanFactory对象中,引用唯一的一个目标实例(记住)

Prototype (多例): 每次通过工厂执行getBean时,返回不同实例对象(记住)

Request (请求范围) : 创建对象保存在request范围,如果request销毁,对象销毁

Session (会话范围): 创建对象保存Session中, 如果session销毁,对象销毁

* globalSession (全局会话 ) :分布式系统,全局会话的概念, 一次登录,应用多个系统(了解就可)

单例Bean 在容器初始化时,实例化 (只实例化一次 )

多例Bean 在工程执行getBean时 才会实例化 (每调用一次,返回不同对象 )

bean的生命周期:

可以通过 init-method属性配置 Bean对象初始化执行方法,destory-method属性配置Bean对象销毁的方法

(初始化方法和构造方法 有区别? 构造方法作用申请空间,为对象基本属性初始化 , 初始化方法 对象复杂构造过程 , java语言建议将对象复杂构造过程单独抽取 初始化方法 )

配置文件:

按照上述这么配置:

写测试代码:

查看调用的时机:

发现并没有执行LifeCycleBean 销毁这条代码。

原因:

在对象构造后,立即执行初始化init , 默认没有执行destroy 销毁方法

03Spring_bean的创建和作用域以及生命周期的更多相关文章

  1. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  2. MyBatis 作用域和生命周期

    理解到目前为止所讨论的类的作用域和生命周期是非常重要的.如果使用不当可导致严重的并发性问题. SqlSessionFactoryBuilder  这个类可以在任何时候被实例化.使用和销毁.一旦您创造了 ...

  3. spring作用、spring注解、管理对象的作用域与生命周期、自动装配、Spring的框架包有哪些作用是什么

    Spring 1. 作用 创建和管理对象,使得开发过程中,可以不必使用new关键字创建对象,而是直接获取对象!并且,还可以通过一些配置,使得某些获取到的对象,其中某些属性已经是被赋值的! 2. Spr ...

  4. Spring中bean的作用域与生命周期

    在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean.简单地讲,bean 就是由 IOC 容器初始化.装配及管理的对象,除此之外,bean 就与 ...

  5. Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  6. Bean XML 配置(2)- Bean作用域与生命周期回调方法配置

    系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...

  7. C的变量类型、作用域与生命周期的总结

    C的变量类型.作用域与生命周期的总结 最近在看"C Programing Language" (Kernighan, Ritchie)关于外部变量的讨论,之前在学C的时候对这些ex ...

  8. MyBatis(四):SqlSession及其工厂类的作用域和生命周期

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...

  9. Mybatis学习-配置、作用域和生命周期

    核心配置文件:Mybatis-config.xml Mybatis的配置文件包含了会深深影响Mybatis行为的设置和属性信息 配置(configuration) 在mybatis-config.xm ...

随机推荐

  1. 关于插件管理器Alcatraz

    如何安装插件管理器Alcatraz:去github下载一个Alcatraz安装包,然后运行一下. 会弹出 记得选择左边的Load Bundle 退出Xcode 重新运行一下就OK 了. 然后就可以看到 ...

  2. iOS开发之百度地图的集成——地图标注&POI检索

    本篇分为两部分: 一.地图标注 第一步:首先创建 BMKMapView 视图 第二步:在视图完全显示出来后设置,并实现代理方法 第三步:运行程序,此时大头针效果可以正常显示 二.POI检索 第一步:延 ...

  3. Caliburn.Micro 关闭父窗体打开子窗体

    比如我们在做登录的时候需要关闭父窗体打开子窗体.使用Caliburn.Micro它的时候我们关闭登录窗口的时候主页面也会关闭. 解决方法就是在登录页面的CS里面写 IndexView iv = new ...

  4. Java 控制线程

    1.join public class JoinThreadTest extends Thread { public JoinThreadTest(String name){ super(name); ...

  5. NPOI对Excel的操作(Sheet转DataTable、List<T>)

    通过NPOI对Excel进行操作,这里主要是读取的操作.封装到ExcelHelper操作类中. 1 using System.Collections.Generic; 2 using NPOI.HSS ...

  6. msbuild ConfuserEx.Build 加密

    https://www.nuget.org/packages/ConfuserEx.Build/ <?xml version="1.0" encoding="utf ...

  7. php 操作mysql 分表的一种方法

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAARUAAAHXCAIAAAAdrFkKAAAgAElEQVR4nOyd61sTx9//+4fcj+6H95

  8. node模块的分类

    模块的分类 1.核心模块 2.文件模块 3.第三方模块(npm安装的) 模块的引用: 1.路径 2.模块名 模块的流程: 1.创建模块:teacher.js 2.导出模块:exports.add=fu ...

  9. w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

    对于IIS 管理员来说,经常会碰到 Web 服务器 CPU 占用 100% 的情况,以下是个人的日常工作总结和一些解决办法,主要用来剖析 w3wp.exe(IIS )  占用 CPU 100% 的一些 ...

  10. OSGI.NET 框架浅析

    关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1.  UIOSP 开放工厂框架架构 开放工厂所有插件基于OSGi.NET面向服 ...