国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Bean的作用域及生命周期

這篇具有很好參考價值的文章主要介紹了Spring Bean的作用域及生命周期。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言:

Bean的作用域(Scope)

單例模式

原型模式(多例作用域)

請求作用域(request)

會話作用域

全局作用域

網(wǎng)絡長連接

Spring執(zhí)行流程

Bean的生命周期

測試

小結(jié):


前言:

? ? 使用Spring框架時,我們需要清楚Spring托管Bean的作用域和生命周期,這樣使用框架才會更加得心應手。

Bean的作用域(Scope)

單例模式

? ? singleton(默認模式),出于性能考慮,單例模式只需要實例一次即可(淺拷貝)。每次使用的都是同一個對象。

? ? 該作用域的下的Bean在IoC容器中只存在一個實例。獲取Bean,通過applicationContext.getBean()等方法獲取,或者使用注解裝配Bean(@Autowired注入)都是同一個對象實例。

? ? 通常無狀態(tài)的Bean使用該模式(無狀態(tài)表示Bean對象的屬性不需要更新)。Spring默認使用該模式。

原型模式(多例作用域)

? ? prototype(多例模式),每次使用對象都需要創(chuàng)建Bean對象,互相都沒關(guān)系(深拷貝)。

? ? 每次該作用域下的請求Bean對象實例都會創(chuàng)建新的Bean,類似于多例模式。獲取Bean,通過applicationContext.getBean()等方法獲取,或者使用注解裝配Bean(@Autowired注入)都是新的對象實例。

? ? 通常有狀態(tài)的Bean使用該作用域,Bean的屬性可能會更新。

請求作用域(request)

? ? 每次HTTP請求,都會創(chuàng)建一個Bean對象(適用于 Spring MVC),類似于prototype模式。

? ? 一次HTTP請求和響應是共享同一個Bean對象實例。

會話作用域

? ? 每次Session會話共享一個Bean,例如記錄用戶的登錄信息(適用于 Spring MVC)。在一個 http session 中,定義一個Bean實例。

全局作用域

? ? application,一個http servlet context 中共享同一個Bean(適用于 Spring MVC)。

? ? 在一個http servlet context 中,定義一個Bean對象實例。Web應用的上下文信息,例如記錄一個應用的共享信息。

網(wǎng)絡長連接

? ? WebSocket,只適用于Spring?WebSocket。在一個HTTP?WebSocket的生命周期中(一次長連接),定義一個Bean實例。

? ? WebSocket的每次會話中,保存了一個Map結(jié)構(gòu)的頭信息,用來保存客戶端消息頭。第一次初始化后,直到一次長連接結(jié)束都是用一個Bean。

注意:

? ? 可以在Spring配置文件中使用scpoe屬性設置相應Bean的作用域。

Spring執(zhí)行流程

? ? 1)啟動容器。加載配置文件,spring-config.xml文件。

? ? 2)根據(jù)配置完成Bean實例化,初始化(分配內(nèi)存空間,從無到有,初始化空間)。掃描配置文件下帶有五大類或者方法注解,進行Bean初始化。

? ? 3)注冊Bean到Spring容器中。

? ? 4)注入Bean的屬性。(@Autowired,@Resource)。

Bean的生命周期

? ? 宏觀上來談,Bean的生命周期就是從誕生到銷毀的過程。

1)開辟內(nèi)存空間(實例化)

2)設置屬性(注入屬性)

3)初始化

  • 各種通知(對象的哪個屬性初始化完成了)
  • 初始化前置方法
  • 初始化方法(兩種實現(xiàn)方式:xml方式,注解方式)
  • ?初始化后置方法

4)使用Bean

5)銷毀Bean對象

注意:

? ??設置屬性必須在初始化之前,因為有可能在初始化的時候使用Bean。

測試

package com.spring.demo.component;

import org.springframework.beans.factory.BeanNameAware;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

public class BeanComponent implements BeanNameAware {

    @Override
    public void setBeanName(String s) {
        System.out.println("執(zhí)行了通知 -> " + s);
    }

    // xml初始化
    public void myInit() {
        System.out.println("xml方式初始化");
    }

    @PostConstruct
    public void doPostConstruct() {
        System.out.println("注解初始化");
    }

    public void hello() {
        System.out.println("hello");
    }

    @PreDestroy
    public void doPreDestroy() {
        System.out.println("執(zhí)行了 doPreDestroy");
    }


}

? ? Spring配置文件,將Bean手動存儲在Spring容器中。

<bean id="beanComponent" class="com.spring.demo.component.BeanComponent" init-method="myInit"></bean>

運行結(jié)果

Spring Bean的作用域及生命周期

注意:

? ? 可以清楚看見Bean生命周期所做的一些事情(這里使用了兩種初始化的方式)。

小結(jié):

? ? Spring手動添加Bean和通過getBean()獲取Bean的方式太麻煩,因此有了Spring Boot,就是Spring腳手架。目的就是更加方便的使用Spring容器,后續(xù)文章會詳細介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-438029.html

到了這里,關(guān)于Spring Bean的作用域及生命周期的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【Spring】Bean的作用域與生命周期詳情:請簡述Spring的執(zhí)行流程并分析Bean的生命周期?

    【Spring】Bean的作用域與生命周期詳情:請簡述Spring的執(zhí)行流程并分析Bean的生命周期?

    ?我們都知道,Spring框架為開發(fā)人員提供了很多便捷,這使得開發(fā)人員能夠更加專注于應用程序的核心業(yè)務邏輯,而不需要花費大量時間和精力在技術(shù)細節(jié)上。作為一個包含眾多工具方法的IoC容器,存取JavaBean是其極為重要的一個環(huán)節(jié)。本文就對Spring中的Bean的作用域和生命周

    2024年02月12日
    瀏覽(27)
  • 【Spring】Bean的作用域和生命周期

    【Spring】Bean的作用域和生命周期

    目錄 一、引入案例來探討B(tài)ean的作用域 二、Bean的作用域 2.1、Bean的6種作用域 2.2、設置Bean的作用域 三、Spring的執(zhí)行流程 ?四、Bean的聲明周期 1、生命周期演示 首先我們創(chuàng)建一個User類,定義一個用戶信息,在定義一個Users類,使用方法注解將user存入Spring中,然后兩個用戶A對這

    2024年02月14日
    瀏覽(24)
  • Spring Bean的作用域和生命周期

    Spring Bean的作用域和生命周期

    Bean 的作用域指的是 Bean 在 Spring 容器中的行為(Bean 實例創(chuàng)建及生命周期),它的行為是由 Spring 來管理的,可以根據(jù)具體情況選擇不同的作用域來達到性能優(yōu)化、資源利用最大化和可維護性等目的。 Bean 作用域(Scope)類型主要有如下幾種: 其中前兩種是 Spring 核心作用域,

    2024年02月12日
    瀏覽(30)
  • Bean 作用域、生命周期和Spring執(zhí)行流程

    Bean 作用域、生命周期和Spring執(zhí)行流程

    假設現(xiàn)在有?個公共的 Bean,提供給 A ?戶和 B ?戶使?,然?在使?的途中 A ?戶卻“悄悄”地修改了公共 Bean 的數(shù)據(jù),導致 B ?戶在使?時發(fā)?了預期之外的邏輯錯誤。 我們可以看到,B 用戶在使用這個Bean對象時,得到的Dog是被A 用戶修改過的,這無疑會給 B 用戶帶來很

    2024年02月12日
    瀏覽(28)
  • Spring中Bean的作用域和Spring生命周期

    Spring中Bean的作用域和Spring生命周期

    從前面的文章中我們看出Spring是用來存儲和讀取Bean的,因此Spring中Bean是最核心的資源,所以我們將對Bean進行深入的理解。 現(xiàn)在有一個公共的Bean,提供給了兩個用戶去使用,但是在使用過程中,用戶一修改了公共的Bean數(shù)據(jù),當用戶2在使用時,卻發(fā)現(xiàn)產(chǎn)生了邏輯上的錯誤。

    2024年02月16日
    瀏覽(25)
  • 5、Spring之bean的作用域和生命周期

    5、Spring之bean的作用域和生命周期

    5.1.1.1、配置bean 注意:當bean不配置scope屬性時,默認是singleton(單例) 5.1.1.2、測試 由控制臺日志可知,此時ioc獲取到的兩個bean本質(zhì)上是同一個對象 5.1.2.1、配置bean 5.1.2.2、測試 由控制臺日志可知,此時ioc獲取到的兩個bean本質(zhì)上是不同的對象 如果是在WebApplicationContext環(huán)境下

    2024年02月14日
    瀏覽(24)
  • Spring系列4 -- Bean的作用域和生命周期

    Spring系列4 -- Bean的作用域和生命周期

    目錄 1. 案例 2. 作用域定義 2.1 Bean的6種作用域 2.2 設置作用域 3. Sring的執(zhí)行流程 4. Bean的生命周期 思考: 為什么不是先進行初始化然后再進行設置屬性呢? ????????假設現(xiàn)在有?個公共的 Bean,提供給 A ?戶和 B ?戶使?,然?在使?的途中 A ?戶卻“悄悄”地修改了公共

    2024年02月15日
    瀏覽(24)
  • 【JavaEE】深入了解Spring中Bean的可見范圍(作用域)以及前世今生(生命周期)

    【JavaEE】深入了解Spring中Bean的可見范圍(作用域)以及前世今生(生命周期)

    【JavaEE】Spring的開發(fā)要點總結(jié)(4) 在學習Spring中,Bean是最核心的操作資源 使用學習Bean對象是一個重點,我們已經(jīng)知道如何存儲它,獲取它,現(xiàn)在我們要知道: 它的作用域,我們才可以知道怎么使用,才能得心應手,符合預期~ 它的生命周期,我們才能更加清楚的了解它的

    2024年02月14日
    瀏覽(26)
  • 【Spring學習】Bean對象的作用域和生命周期,了解了這些你就真正熟悉spring框架了.

    【Spring學習】Bean對象的作用域和生命周期,了解了這些你就真正熟悉spring框架了.

    前言: 大家好,我是 良辰丫 ,我們已經(jīng)學會了Spring的存取,今天我們將一起來學習Bean對象的作用域和生命周期.?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE進階篇之框架學習 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我們一輩子的財富。 ??期

    2024年02月07日
    瀏覽(26)
  • @Autowired和@Resource注解之間的關(guān)系區(qū)別,Bean的作用域和生命周期,Spring的執(zhí)行流程

    @Autowired和@Resource注解之間的關(guān)系區(qū)別,Bean的作用域和生命周期,Spring的執(zhí)行流程

    目錄 一. @Autowired 和 @Resource 注解 二. Bean的作用域? 1.?singleton(單例模式) 2.?prototype(原型模式)(多例模式) 3. 請求作用域:request 4. 會話作用域:session 三. Spring 的執(zhí)行流程 四. Bean 的生命周期? ?1. 實例化 ?2. 設置屬性? 3. Bean 初始化?? ? ?3.1 執(zhí)行各種各種 Aware 通知;? ? ?

    2024年02月04日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包