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

Bean 的生命周期

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

觀前提示:本篇博客演示使用的 IDEA 版本為2021.3.3版本,使用的是Java8(又名jdk1.8)

電腦使用的操作系統(tǒng)版本為 Windows 10


目錄

Spring 的執(zhí)行流程

1. 啟動容器

2. 根據(jù)配置完成 Bean 的初始化

3. 注冊 Bean 對象到容器中

4. 裝配 Bean 的屬性

Bean 的生命周期

Bean 的生命周期代碼演示


Spring 的執(zhí)行流程

在看 Bean 的生命周期之前需要先簡單了解一下 Spring 的執(zhí)行流程

1. 啟動容器

Bean 的生命周期

ApplicationContext 啟動容器

2. 根據(jù)配置完成 Bean 的初始化

Bean 的生命周期

?文章來源地址http://www.zghlxwxcb.cn/news/detail-490377.html

加載配置文件:類加載路徑下的 Beans.xml?

3. 注冊 Bean 對象到容器中

Bean 的生命周期

Bean 的生命周期?

掃描 org.example 包. 掃描有沒有五大類注解, 只有在包掃描的路徑上的類, 且使用 Spring 的注解才可以被注冊到容器中.?

4. 裝配 Bean 的屬性

Bean 的生命周期

?

如果 Bean 對象需要使用其他 Bean 對象作為屬性, 可以使用注解 @Autowired 和 @Resource

Bean 的生命周期

?命周期指的是?個對象從誕?到銷毀的整個?命過程,我們把這個過程就叫做?個對象的?命周期。

Bean 的?命周期分為以下 5 ?部分:

1. 開辟內(nèi)存空間: 實例化 ≠ 初始化

2. 設(shè)置屬性 (注入屬性)

3. 初始化

? ? 3.1 各種通知

? ? 3.2 初始化前置方法

? ? 3.3 初始化方法(兩種實現(xiàn)方式: xml 方式, 注解方式)

? ? 3.4 初始化后置方法

4. 使用 Bean

5. 銷毀對象

Bean 的生命周期

?

Bean 的生命周期代碼演示

初始化方法演示

先在?com.java.demo.component 創(chuàng)建一個類, 叫做 BeanComponent, 然后再?spring-config.xml 里面設(shè)置 Bean

<bean id="beanComponent" class="com.java.demo.component.BeanComponent" ></bean>

這步是初始化的通知

BeanComponent 實現(xiàn)接口?BeanNameAware ,就可以操作下面的 @Override 里面的內(nèi)容, 比如打印 Bean的名字

package com.java.demo.component;

import org.springframework.beans.factory.BeanNameAware;

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

因為初始化方法用得少.所以這步演示前置初始化方法的 xml 方式

在?spring-config.xml 里面寫 init-method

可以看到他有很多方法

Bean 的生命周期

?Bean 的生命周期

?

這里只需要?init-method?

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

再回到?BeanComponent 寫?myInit 方法, 注意名字保持一致

package com.java.demo.component;

import org.springframework.beans.factory.BeanNameAware;

import javax.annotation.PostConstruct;

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

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

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

    //使用 Bean
    public void sayHi(){
        System.out.println("執(zhí)行 sayHi()");
    }
}

到此初始化方法全部執(zhí)行完,也可以加上銷毀

注解的方式執(zhí)行銷毀

@PreDestroy
    public void doPreDestroy(){
        System.out.println("doPreDestroy");
    }

回到 APP 里面執(zhí)行

import com.java.demo.component.BeanComponent;
import com.java.demo.controller.UserController;
import com.java.demo.controller.UserController2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        //不使用 ApplicationContext 而使用 ClassPathXmlApplicationContext
        //因為 ApplicationContext 沒有銷毀方法, 而 ClassPathXmlApplicationContext 有銷毀方法
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        BeanComponent component = context.getBean("beanComponent", BeanComponent.class);
        //使用 Bean
        component.sayHi();
        //銷毀 Bean
        context.destroy();
    }
}

Bean 的生命周期

符合預(yù)期

注意: 注解方式的初始化方法優(yōu)先級比 xml 的初始化方法優(yōu)先級高,因為主流是 注解

如果,注釋掉?

context.destroy();

最后的? doPreDestroy, 就不會執(zhí)行


本文完,感謝觀看,不足之處請在評論區(qū)指出 !

Bean 的生命周期

?

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

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

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

相關(guān)文章

  • Spring:Bean生命周期

    Spring:Bean生命周期

    Bean 生命周期 是 bean 對象從創(chuàng)建到銷毀的整個過程。 簡單的 Bean 生命周期的過程: 1.實例化(調(diào)用構(gòu)造方法對 bean 進(jìn)行實例化) 2.依賴注入(調(diào)用 set 方法對 bean 進(jìn)行賦值) 3.初始化(手動配置 xml 文件中 bean 標(biāo)簽的 init-method 屬性值,來指定調(diào)用對應(yīng)的初始化方法) 4.使用

    2024年02月13日
    瀏覽(27)
  • 【Spring】Bean的作用域與生命周期詳情:請簡述Spring的執(zhí)行流程并分析Bean的生命周期?

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

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

    2024年02月12日
    瀏覽(27)
  • Spring Bean的生命周期

    Spring Bean的生命周期

    Bean生命周期的整個執(zhí)行過程描述如下: 1、根據(jù)配置情況調(diào)用Bean構(gòu)造方法或工廠方法實例化 Bean。 2、利用依賴注入完成Bean中所有屬性值的配置注入。 3、如果Bean 實現(xiàn)了BeanNameAware 接口,則 Spring調(diào)用Bean的setBeanName()方法傳入當(dāng)前Bean的id值。 4、如果Bean實現(xiàn)了BeanFactoryAware 接口

    2023年04月22日
    瀏覽(35)
  • Spring -- Bean的生命周期

    Spring -- Bean的生命周期

    Spring容器在進(jìn)行實例化時,會將xml配置的bean的信息封裝成一個BeanDefinition對象,Spring根據(jù)BeanDefinition來創(chuàng)建Bean對象,里面有很多的屬性用來描述Bean? ?BeanDefinition 中幾個重要方法如下 beanClassName:bean 的類名 initMethodName:初始化方法名稱 properryValues:bean 的屬性值 scope:作用域

    2024年02月15日
    瀏覽(35)
  • Spring 中 Bean 的生命周期

    在您的應(yīng)用程序中,由 Spring IoC 容器管理的形成其核心的對象被稱為 \\\"bean\\\" 。一個 bean 是由 Spring IoC 容器實例化、組裝和管理的對象 這些 bean 是通過您提供給容器的配置元數(shù)據(jù)創(chuàng)建的。 Bean 定義包含了所謂的配置元數(shù)據(jù),容器需要了解以下內(nèi)容: 如何創(chuàng)建一個 bean Bean 的生命

    2024年02月09日
    瀏覽(27)
  • Spring中 Bean的生命周期

    Spring中 Bean的生命周期

    如果把Spring看做一個大型工廠,則Spring容器中的Bean就是該工廠的產(chǎn)品。要想使用這個工廠生產(chǎn)和管理Bean,就需要在配置文件中告訴它需要哪些Bean,以及需要使用何種方式將這些Bean裝配到一起。 Bean的本質(zhì)就是Java中的類,而Spring中的Bean其實就是對實體類的引用,來生產(chǎn)Java類

    2024年01月24日
    瀏覽(24)
  • Spring源碼:Bean生命周期(終章)

    本系列前面講解了Spring的bean定義、bean實例化、bean初始化等生命周期。這些步驟使我們能夠了解bean從創(chuàng)建到準(zhǔn)備好使用所經(jīng)歷的過程。但是,除了這些步驟,bean的銷毀也是非常重要的一步。在本系列的最后,我們將深入探討bean的銷毀過程,包括在什么情況下會發(fā)生銷毀、銷

    2024年02月06日
    瀏覽(34)
  • Spring源碼:Bean生命周期(三)

    在之前的文章中,我們已經(jīng)對 bean 的準(zhǔn)備工作進(jìn)行了講解,包括 bean 定義和 FactoryBean 判斷等。在這個基礎(chǔ)上,我們可以更加深入地理解 getBean 方法的實現(xiàn)邏輯,并在后續(xù)的學(xué)習(xí)中更好地掌握 createBean 方法的實現(xiàn)細(xì)節(jié)。 講解getBean方法之前,我們先來看看他有幾種常見的用法:

    2024年02月02日
    瀏覽(22)
  • Bean作用域和生命周期

    Bean作用域和生命周期

    hi,今天為大家?guī)Ю睟ean的作用域和生命周期的相關(guān)知識 Bean的作用域和我們之前學(xué)過的不一樣,我們之前學(xué)的作用域是一個范圍,而現(xiàn)在指的是 Bean在Spring框架中的某種行為模式,也就是一個動作. 這樣干巴巴的說看我可能無法理解,我們來舉個例子 創(chuàng)建一個公共類的一個公共對象

    2024年02月15日
    瀏覽(33)
  • 詳解Spring Bean的生命周期

    詳解Spring Bean的生命周期

    Spring Bean的生命周期包括以下階段: 1. 實例化Bean 對于BeanFactory容器,當(dāng)客戶向容器請求一個尚未初始化的bean時,或初始化bean的時候需要注入另一個尚未初始化的依賴時,容器就會調(diào)用createBean進(jìn)行實例化。 對于ApplicationContext容器,當(dāng)容器啟動結(jié)束后,便實例化所有的bean。

    2024年02月14日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包