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

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

這篇具有很好參考價(jià)值的文章主要介紹了從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

創(chuàng)建 Spring 項(xiàng)目:

1.創(chuàng)建一個(gè) Maven 項(xiàng)目:

?2.添加 Spring 框架支持:

3.配置資源文件:

4.添加啟動(dòng)類:

Bean 對(duì)象的使用:

1.存儲(chǔ) Bean 對(duì)象:

1.1 創(chuàng)建 Bean:

1.2 存儲(chǔ) Bean 到容器內(nèi):

2.獲取 Bean 對(duì)象:

2.1 創(chuàng)建 Spring 上下文:

2.2 獲取指定 Bean 對(duì)象:

ApplicationContext 和 BeanFactory 的區(qū)別:

ApplicationContext:

BeanFactory:

總結(jié):

三種常用的 getBean :

根據(jù) id 獲?。?/p>

對(duì)象類型獲?。?/p>

id + 對(duì)象類型獲?。?/p>

總結(jié)


從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取


創(chuàng)建 Spring 項(xiàng)目:

? ? ? ? 創(chuàng)建一個(gè) Spring 項(xiàng)目分為四步:

  1. ?創(chuàng)建一個(gè)普通 Maven 項(xiàng)目;
  2. ?添加 Spring 框架支持;
  3. ?配置資源文件;
  4. ?添加啟動(dòng)類;

1.創(chuàng)建一個(gè) Maven 項(xiàng)目:

前提聲明:個(gè)人盡量使用 idea2021,因?yàn)?022版之后的相關(guān)插件是收費(fèi)的;

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

?2.添加 Spring 框架支持:

????????將這段配置依賴添加到 Spring 項(xiàng)目的 pom.xml 文件中:刷新下載到本地倉(cāng)庫(kù)

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.24</version>
        </dependency>
    </dependencies>

3.配置資源文件:

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

? ? ? ? 在 resources 包中創(chuàng)建一個(gè) xxx.xml 文件,再把 spring配置文件添加進(jìn)入即可:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <content:component-scan base-package="com.spring.demo"></content:component-scan>
</beans>

4.添加啟動(dòng)類:

? ? ? ? 在 java 文件下創(chuàng)建一個(gè)類,專門用來(lái)啟動(dòng)測(cè)試:

public class School {
    public static void main(String[] args) {

    }
}

Bean 對(duì)象的使用:

1.存儲(chǔ) Bean 對(duì)象:

? ? ? ? 原理:Spring 框架有 spring-context 來(lái)管理 spring 上下文,還有 spring-beans 來(lái)管理對(duì)象的模塊;

? ? ? ? 什么是 Bean對(duì)象?項(xiàng)目中重復(fù)使用的對(duì)象都可以視為 Bean 對(duì)象,存儲(chǔ) Bean 對(duì)象也就是把項(xiàng)目所需的對(duì)象放入 Spring 容器中;

1.1 創(chuàng)建 Bean:

? ? ? ? 現(xiàn)在創(chuàng)建了一個(gè)普通的 Student 類,其自帶一個(gè) sayHi() 方法,由于以后我還要頻繁使用這個(gè)類,那么就可以將其視為一個(gè) Bean:

public class Student {
    public void sayHi() {
        System.out.println("hi student");
    }
}

1.2 存儲(chǔ) Bean 到容器內(nèi):

? ? ? ? 存儲(chǔ)bean也相當(dāng)于“聲明”的作用,先打開剛才在 resources包里創(chuàng)建的 spring-config.xml 配置文件:

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

存儲(chǔ) Bean 的格式:

<bean id="" class=""><bean>

如果 bean 在多級(jí)包內(nèi),class屬性設(shè)置時(shí)就要注意路徑;

現(xiàn)在將 Student 這個(gè)類作為 bean 添加進(jìn)去:注意路徑

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

<!--    將Bean對(duì)象(com.spring.demo.com.spring.demo.Student)
存到 Spring容器中,它的 id 為 student-->
    <bean id="student" class="com.spring.demo.Student"></bean>

2.獲取 Bean 對(duì)象:

? ? ? ? 獲取 bean 對(duì)象分為三步:

  1. 得到 Spring 上下文對(duì)象:因?yàn)?Bean 對(duì)象交給了 Spring 來(lái)管理,所以得先得到 Spring 才能有權(quán)限操作容器;
  2. 通過(guò) Spring 上下文獲取容器內(nèi)的 Bean 對(duì)象;
  3. 使用 Bean 對(duì)象;

2.1 創(chuàng)建 Spring 上下文:

? ? ? ? 這里需要了解兩個(gè)接口:ApplicationContext BeanFactory;

? ? ? ? 語(yǔ)法:

ApplicationContext context = 
                new ClassPathXmlApplicationContext("spring-config.xml");
 BeanFactory beanFactory =
                new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

2.2 獲取指定 Bean 對(duì)象:

? ? ? ? 這里借助?ApplicationContext 來(lái)演示:

public class School {
    public static void main(String[] args) {
        // 1.得到 Spring 上下文
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 2.獲取指定 Bean 對(duì)象
        Student student = (Student) context.getBean("student");
        // 3.使用 Bean 對(duì)象
        student.sayHi();
    }
}

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

至此 Spring 的創(chuàng)建、Bean 的存儲(chǔ)和獲取已經(jīng)做了基本介紹;


ApplicationContext 和 BeanFactory 的區(qū)別:

? ? ? ? 在上述代碼中再添加一個(gè) Teacher 類作為一個(gè)新的 Bean,添加到容器中:

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

public class Teacher {
    public Teacher() {
        System.out.println("do teacher init");
    }

    public void sayHi() {
        System.out.println("hi teacher");
    }
}
    <bean id="student" class="com.spring.demo.Student"></bean>
    <bean id="teacher" class="com.spring.demo.Teacher"></bean>

此時(shí)我們的容器中有兩個(gè) Bean:一個(gè)是Student、一個(gè)是Teacher;

????????分別使用 ApplicationContext 和 BeanFactory 來(lái)操作:都只嘗試獲取容器中 Student 這個(gè) Bean,來(lái)看看它們的效果有什么不同.

ApplicationContext:

? ? ? ? 原代碼不用變:?

public class School {
    public static void main(String[] args) {
        // 1.得到 Spring 上下文
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 2.獲取指定 Bean 對(duì)象
        Student student = (Student) context.getBean("student");
        // 3.使用 Bean 對(duì)象
        student.sayHi();
    }
}

BeanFactory:

? ? ? ? 創(chuàng)建一個(gè)新的啟動(dòng)類:School2,獲取 Spring 上下文和 ApplicationContext 不一樣,其他也不用變。

public class School2 {
    public static void main(String[] args) {
        // 1.使用 BeanFactory 來(lái)獲取 Spring 上下文 
        BeanFactory beanFactory =
                new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        // 2. 從 Spring 容器中獲取 bean 對(duì)象
        Student student = (Student) beanFactory.getBean("student");
        student.sayHi();
    }
}

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

?????????對(duì)比運(yùn)行結(jié)果,明明它們兩個(gè)都時(shí)獲取和使用?id 為 “student” 的 Bean 對(duì)象,ApplicationContext 對(duì)于上下文卻把 Teacher 也拿了出來(lái),BeanFactory 只拿到了 Student;

總結(jié):

相同點(diǎn):

  • ApplicationContext 和 BeanFactory 都是獲取容器中Bean對(duì)象的;

不同點(diǎn):

  • ?ApplicationContext 是一次性加載并初始化容器里的所有 Bean 對(duì)象(餓漢模式),而 BeanFactory 是需要哪個(gè)才去加載哪個(gè)(懶漢模式);
  • ApplicationContext 其實(shí)是 BeanFactory 的子類,子類不僅繼承了父類的所有功能外,還擁有自己獨(dú)特的功能;而ClassPathXmlApplicationContext 又屬于 ApplicationContext的子類;
  • BeanFactory 也是最早被設(shè)計(jì)出來(lái)的,設(shè)計(jì)之初由于機(jī)器硬件造價(jià)昂貴,就只加載需要的對(duì)象;而 ApplicationContext 是之后設(shè)計(jì)出來(lái)的,人們?yōu)榱吮M可能提高效率,就想到一次性加載出所有 Bean 對(duì)象;

三種常用的 getBean :

? ? ? ? getBean() 方法有很多重載,對(duì)比以下常用的三種:

  1. 根據(jù) id 獲取;
  2. 對(duì)象類型獲??;
  3. id,對(duì)象類型獲?。?/span>

根據(jù) id 獲?。?/h4>
    <bean id="student" class="com.spring.demo.Student"></bean>
    <bean id="teacher" class="com.spring.demo.Teacher"></bean>
        // 2.獲取指定 Bean 對(duì)象
        Student student = (Student) context.getBean("student");
        Teacher teacher = (Teacher) context.getBean("teacher");

這種方式顯然比較粗暴,不可取,存在強(qiáng)轉(zhuǎn);另外如果通過(guò)id獲取的對(duì)象為null,也會(huì)出現(xiàn)異常;

對(duì)象類型獲?。?/h4>
    <bean id="student" class="com.spring.demo.Student"></bean>
    <bean id="teacher" class="com.spring.demo.Teacher"></bean>
        // 2.獲取指定 Bean 對(duì)象
        Student student = context.getBean(Student.class);
        Teacher teacher = context.getBean(Teacher.class);

這種方式雖然不粗暴,但存在一個(gè)問題:

? ? ? ? 當(dāng)同一類型的 Bean 在容器中注冊(cè)了兩次,編譯器就會(huì)報(bào)?NoUniqueBeanDefinitionException 異常;

id + 對(duì)象類型獲?。?/h4>

????????這種方式安全性較高;

    <bean id="student" class="com.spring.demo.Student"></bean>
    <bean id="student2" class="com.spring.demo.Student"></bean>

    <bean id="teacher" class="com.spring.demo.Teacher"></bean>
        // 2.獲取指定 Bean 對(duì)象
        Student student = context.getBean("student2",Student.class);
        Teacher teacher = context.getBean("teacher",Teacher.class);

思考:
????????既然剛才提到了同一個(gè)類型可能在容器中注冊(cè)多次,雖然它們只是 id 不同,那它們指向的是否為同一塊空間呢?

? ? ? ? 代碼驗(yàn)證一下:

    <bean id="student" class="com.spring.demo.Student"></bean>
    <bean id="student2" class="com.spring.demo.Student"></bean>

    <bean id="teacher" class="com.spring.demo.Teacher"></bean>
public class School {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
       
        Student student1 = context.getBean("student", Student.class);
        Student student2 = context.getBean("student2", Student.class);
       
        System.out.println(student1 == student2);
        System.out.println(student1.equals(student2));
    }
}

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取

于是證明它們本身就是不同的對(duì)象的引用;


總結(jié):

Spring 項(xiàng)目的創(chuàng)建及 Bean 的基本使用流程:

從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457786.html

到了這里,關(guān)于從 Spring 的創(chuàng)建到 Bean 對(duì)象的存儲(chǔ)、讀取的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL)

    Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL)

    第一步,創(chuàng)建 Maven 項(xiàng)目 ,Spring 也是基于 Maven 的。 由于國(guó)外源不穩(wěn)定,可能讓下面第二步引入 Spring 依賴會(huì)失敗,所以這里先介紹如何一下配置國(guó)內(nèi)鏡像源。 現(xiàn)成的 settings.xml 文件鏈接:gitee 如果你已經(jīng)有了 settings.xml 文件,但沒有配置 mirror ,配置內(nèi)容如下: 如果你是在引

    2024年02月17日
    瀏覽(24)
  • 【JavaEE】DI與DL的介紹-Spring項(xiàng)目的創(chuàng)建-Bean對(duì)象的存儲(chǔ)與獲取

    【JavaEE】DI與DL的介紹-Spring項(xiàng)目的創(chuàng)建-Bean對(duì)象的存儲(chǔ)與獲取

    Spring的開發(fā)要點(diǎn)總結(jié) Spring的初步了解博客:【JavaEE】JavaEE進(jìn)階:框架的學(xué)習(xí) - Spring的初步認(rèn)識(shí)_s:103的博客-CSDN博客 就不帶大家回顧了~ 從框架獲取的對(duì)象稱為獲取【Bean對(duì)象】! Java是咖啡,Bean就是\\\"咖啡豆\\\",也就是“對(duì)象” Spring項(xiàng)目開發(fā)就是 開業(yè) , 放咖啡豆到罐子里 , 后

    2024年02月16日
    瀏覽(22)
  • Spring(二):更簡(jiǎn)單的存儲(chǔ)與讀取 Bean

    Spring(二):更簡(jiǎn)單的存儲(chǔ)與讀取 Bean

    通過(guò)上一章的Spring,我們基本實(shí)現(xiàn)了Spring 的讀取與存儲(chǔ),但是在操作過(guò)程中,讀取與存儲(chǔ)并沒有那么得“簡(jiǎn)單” 一套流程還是很復(fù)雜,所以,本章來(lái)介紹更加簡(jiǎn)單得讀取與存儲(chǔ)。 在 Spring 中想要更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核?是使?注解,也就是我們接下來(lái)要學(xué)習(xí) Spring 中的

    2024年02月15日
    瀏覽(17)
  • 使用Spring的五大類注解讀取和存儲(chǔ)Bean

    使用Spring的五大類注解讀取和存儲(chǔ)Bean

    目錄 1.存儲(chǔ)Bean對(duì)象的注解 1.1 五大類注解 1.2 方法注解 1.3添加注解的依賴 2.注解的使用 2.1??controller注解 2. 2Service注解 ?2.3.Resopsitory注解 2.4Component注解 2.5Configuration注解 2.6 注解之間的關(guān)系 3.方法注解 3.1 方法注解要配合類注解來(lái)使用。 3.2 重命名Bean 4.獲取Bean對(duì)象(對(duì)象裝配

    2024年02月01日
    瀏覽(23)
  • Spring使用注解存儲(chǔ)Bean對(duì)象

    Spring使用注解存儲(chǔ)Bean對(duì)象

    在前一篇博客中( Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL))介紹的是通過(guò)配置文件注冊(cè)對(duì)象從而存儲(chǔ)到 Spring 中,這種方式其實(shí)還是挺繁瑣的。 實(shí)際上,在使用學(xué)習(xí)使用 Spring過(guò)程中,當(dāng)我們要實(shí)現(xiàn)一個(gè)功能的時(shí)候,先應(yīng)該考慮的是有沒有相應(yīng)的注解是實(shí)現(xiàn)對(duì)應(yīng)功能的,Spring 中

    2024年02月16日
    瀏覽(21)
  • spring中存儲(chǔ)和獲取bean對(duì)象

    spring中存儲(chǔ)和獲取bean對(duì)象

    存儲(chǔ) Bean 分為以下 2 步: 存儲(chǔ) Bean 之前,先得有 Bean 才?,因此先要?jiǎng)?chuàng)建?個(gè) Bean, 說(shuō)白了也就是寫一個(gè)類。 告訴spring,把這個(gè)類的對(duì)象存起來(lái)。 編寫 User 類, 有 sayHi 方法。 告訴 spring ,把這個(gè)類的對(duì)象存起來(lái)。 在配置文件中可以通過(guò) bean 標(biāo)簽來(lái)告訴 spring 把對(duì)象存起來(lái)。

    2024年02月15日
    瀏覽(24)
  • Spring——更快捷的存儲(chǔ) / 獲取Bean對(duì)象

    Spring——更快捷的存儲(chǔ) / 獲取Bean對(duì)象

    本人是一個(gè)普通程序猿!分享一點(diǎn)自己的見解,如果有錯(cuò)誤的地方歡迎各位大佬蒞臨指導(dǎo),如果你也對(duì)編程感興趣的話,互關(guān)一下,以后互相學(xué)習(xí),共同進(jìn)步。這篇文章能夠幫助到你的話,勞請(qǐng)大家點(diǎn)贊轉(zhuǎn)發(fā)支持一下! 上篇文章中,向Spring容器中添加對(duì)象,還要去配置文件里手動(dòng)添

    2024年02月15日
    瀏覽(33)
  • Spring使用注解存儲(chǔ)和讀取對(duì)象

    Spring使用注解存儲(chǔ)和讀取對(duì)象

    之前我們存儲(chǔ)Bean時(shí),需要在spring-config.xml中添加bean注冊(cè)才行,這樣的方式并不簡(jiǎn)單。我們要想 更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核心是使用注解 1.使用類注解(五大類注解): @Controller:控制器,驗(yàn)證用戶請(qǐng)求的數(shù)據(jù)正確性(安保系統(tǒng)) @Service:服務(wù)層,編排和調(diào)度具體執(zhí)行方法的(客服

    2023年04月19日
    瀏覽(26)
  • Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    在 Spring 中要想更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象 , 核心是 使用注解 , 所以我們需要通過(guò) Spring 中相關(guān)注解 , 來(lái)存儲(chǔ)和讀取 Bean 對(duì)象. 之前我們存儲(chǔ) Bean 時(shí) , 需要在 spring-config.xml 中添加一行注釋才行: 而現(xiàn)在我們只需一個(gè)注解就可以替代之前要寫一行配置 , 不過(guò)在存儲(chǔ)對(duì)象之前 , 我們先

    2024年02月02日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包