当前位置: 首页 > news >正文

攀枝花 网站建设免费的网站域名查询

攀枝花 网站建设,免费的网站域名查询,香港恢复通关最新消息,快速搭建房屋Bean的生命周期Bean的执行流程:Bean 执行流程:启动Spring 容器 -> 实例化 Bean(分配内存空间,从无到有)-> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取…

Bean的生命周期

Bean的执行流程:

Bean 执行流程:启动Spring 容器 -> 实例化 Bean(分配内存空间,从无到有)-> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。

所谓的⽣命周期指的是⼀个对象从诞⽣到销毁的整个⽣命过程,我们把这个过程就叫做⼀个对象的⽣命周期。

Bean 的⽣命周期分为以下 5 ⼤部分:

1.实例化 Bean(为 Bean 分配内存空间)

2.设置属性(Bean 注⼊和装配)

3.Bean 初始化

实现了各种Aware 通知的⽅法,如 BeanNameAware、BeanFactoryAware、ApplicationContextAware 的接⼝⽅法;

执⾏BeanPostProcessor 初始化前置⽅法;

执⾏@PostConstruct 初始化⽅法,依赖注⼊操作之后被执⾏;

执⾏⾃⼰指定的init-method ⽅法(如果有指定的话);

执⾏BeanPostProcessor 初始化后置⽅法。

4.使⽤ Bean

5.销毁 Bean

销毁容器的各种⽅法,如@PreDestroy、重写DisposableBean 接⼝⽅法、destroy-method。

实例化和初始化的区别:

实例化和属性设置是系统“事件”,其操作过程不可⼈⼯⼲预和修改;⽽初始化是给开发者提供的,可以在实例化之后,类加载完成之前进⾏⾃定义“事件”处理。

Bean 的⽣命流程看似繁琐,但咱们可以以⽣活中的场景来理解它,⽐如我们现在需要买⼀栋房⼦,那么我们的流程是这样的:

1. 先买房(实例化,从⽆到有);

2. 装修(设置属性);

3. 买家电,如洗⾐机、冰箱、电视、空调等([各种]初始化);

4. ⼊住(使⽤ Bean);

5. 卖出去(Bean 销毁)。

为什么要先设置属性在进⾏初始化呢?

很明显是避免空指针异常

Bean的作用域

现在有⼀个公共的 Bean,提供给 A ⽤户和 B ⽤户使⽤,然⽽在使⽤的途中 A ⽤户却“悄悄”地修改了公共 Bean 的数据,导致 B ⽤户在使⽤时发⽣了预期之外的逻辑错误。

案例如下:

公共 Bean:

A ⽤户使⽤时,进⾏了修改操作:

B ⽤户再去使⽤公共 Bean 的时候:

打印 A ⽤户和 B ⽤户公共 Bean 的值:

以上问题的原因是因为Bean 默认情况下是单例模式(singleton),也就是所有⼈的使⽤的都是同⼀个对象,使⽤单例可以很⼤程度上提⾼性能,所以在 Spring 中Bean 的作⽤域默认也是 singleton 单例模式。

所以限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。⽽Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀个⼈读取到的就是被修改的值。

Spring 容器在初始化⼀个 Bean 的实例时,同时会指定该实例的作⽤域。Spring有 6 种作⽤域,最后四种是基于Spring MVC ⽣效的:

1. singleton:单例作⽤域

2. prototype:原型作⽤域(多例作⽤域)

3. request:请求作⽤域

4. session:回话作⽤域

5. application:全局作⽤域

6. websocket:HTTP WebSocket 作⽤域

注意后4 种状态是 Spring MVC 中的值,在普通的 Spring 项⽬中只有前两种。

Singleton(单例作⽤域):

官⽅说明:(Default) Scopes a single bean definition to a single object instance for each Spring IoC container.

描述:该作⽤域下的Bean在IoC容器中只存在⼀个实例:获取Bean(即通过applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是同⼀个对象。

场景:通常⽆状态的Bean使⽤该作⽤域。⽆状态表示Bean对象的属性状态不需要更新 。

备注:Spring默认选择该作⽤域

prototype原型作⽤域(多例作⽤域)

官⽅说明:Scopes a single bean definition to any number of object instances.

描述:每次对该作⽤域下的Bean的请求都会创建新的实例:获取Bean(即通过applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是新的对象实例,其实这种对系统资源开销比较大。

场景:通常有状态的Bean使⽤该作⽤域

Request(请求作⽤域)

官⽅说明:Scopes a single bean definition to the lifecycle of a single HTTP request. That is, each HTTP request has its own instance of a bean created off the back of a single

bean definition. Only valid in the context of a web-aware Spring ApplicationContext.

描述:每次http请求会创建新的Bean实例,类似于prototype

场景:⼀次http的请求和响应的共享Bean

备注:限定SpringMVC中使⽤

Session(回话作⽤域)

官⽅说明:Scopes a single bean definition to the lifecycle of an HTTP Session. Only valid in the context of a web-aware Spring ApplicationContext.

描述:在⼀个http session中,定义⼀个Bean实例

场景:⽤户回话的共享Bean, ⽐如:记录⼀个⽤户的登陆信息

备注:限定SpringMVC中使⽤

Application(全局作⽤域)

官⽅说明:Scopes a single bean definition to the lifecycle of a ServletContext. Only valid in the context of a web-aware Spring ApplicationContext.

描述:在⼀个http servlet Context中,定义⼀个Bean实例

场景:Web应⽤的上下⽂信息,⽐如:记录⼀个应⽤的共享信息

备注:限定SpringMVC中使⽤

Websocket(HTTP WebSocket 作⽤域)

官⽅说明:Scopes a single bean definition to the lifecycle of a WebSocket. Only valid in the context of a web-aware Spring ApplicationContext.

描述:在⼀个HTTP WebSocket的⽣命周期中,定义⼀个Bean实例

场景:WebSocket的每次会话中,保存了⼀个Map结构的头信息,将⽤来包裹客户端消息头。第⼀次初始化后,直到WebSocket结束都是同⼀个Bean。

备注:限定Spring WebSocket中使⽤

单例作⽤域(singleton)和全局作⽤域(application)区别

singleton 是 Spring Core 的作⽤域;application 是 Spring Web 中的作⽤域;

singleton 作⽤于 IoC 的容器,⽽ application 作⽤于 Servlet 容器。

如何设置Bean的作用域:

1.直接设置值:@Scope("prototype")

2.使用枚举设置:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

http://www.zhongyajixie.com/news/14069.html

相关文章:

  • 哪个素材网站免费微信指数是搜索量吗
  • 做外贸纱线用什么网站互联网营销师课程
  • 网络引流推广怎么做网站站内关键词优化
  • 定兴做网站的深圳百度推广排名优化
  • 如何做网站标题不含关键词的排名今日头条十大热点
  • 日照网站优化品牌定位
  • 网站开发的系统需求长春seo优化企业网络跃升
  • 项目网站制作百度网址大全下载
  • 网站地图怎样做职业技能培训学校
  • 网站建设齐齐哈尔如何做网络营销推广
  • 深圳哪里做网站靠谱的免费建站
  • 文化产品电商网站建设规划重庆seo团队
  • 个人做商业网站需要什么小程序开发教程全集免费
  • 织梦做的网站怎么上传视频教程营销推广策略
  • 做婚介网站可行性报告深圳网络推广外包
  • 滁州市网站建设科技公司西安网络推广公司网络推广
  • 做网站的主要内容电销外包团队在哪找
  • 2345浏览器官网首页黑龙江seo关键词优化工具
  • 做企业网站国内发展北京seo分析
  • 网站数据模板关键词
  • 买域名价格江东seo做关键词优化
  • 如何用模板做网站昆明seo案例
  • ftp 网站文件软文营销的三个层面
  • 微信卖水果链接网站怎么做vue seo优化
  • 那个网站有帮人做图的seo外链在线工具
  • 淘宝网站怎么做的北京seo百度推广
  • 帮我们公司做网站手机网络优化
  • 出版社类网站模板免费的外贸b2b网站
  • 简述网站建设市场调研方案范文
  • 无锡做网站费用磁力猫torrent kitty