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

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

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

一. Spring項(xiàng)目的創(chuàng)建

1. 創(chuàng)建Maven項(xiàng)目

第一步,創(chuàng)建 Maven 項(xiàng)目,Spring 也是基于 Maven 的。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

2. 配置國(guó)內(nèi)源

由于國(guó)外源不穩(wěn)定,可能讓下面第二步引入 Spring 依賴會(huì)失敗,所以這里先介紹如何一下配置國(guó)內(nèi)鏡像源。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean
現(xiàn)成的settings.xml文件鏈接:gitee

如果你已經(jīng)有了settings.xml文件,但沒(méi)有配置mirror,配置內(nèi)容如下:

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
</mirror>

如果你是在引入相關(guān)依賴失敗后進(jìn)行的國(guó)內(nèi)源配置,就要去本地管理jar包的目錄將jar包都進(jìn)行刪除,然后重新刷新下載依賴即可。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

3. 添加spring依賴

第二步,在 Maven 項(xiàng)目中添加 Spring 的支持(spring-context, spring-beans)

pom.xml文件添加依賴項(xiàng)。

<dependencies>
   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
  
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
</dependencies>

刷新等待加載完成。
Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

4. 創(chuàng)建啟動(dòng)類

第三步,創(chuàng)建啟動(dòng)類與main方法,用來(lái)做簡(jiǎn)單的測(cè)試

java 目錄創(chuàng)建類,寫代碼即可,因?yàn)檫@里只演示怎么創(chuàng)建 Spring 項(xiàng)目和介紹 Spring 的簡(jiǎn)單使用,不會(huì)就上線發(fā)布,就不按照 Maven 的模板目錄結(jié)構(gòu)來(lái)搞了。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

二.儲(chǔ)存或讀取Bean對(duì)象

1. 添加spring配置文件

右鍵resources目錄,新建一個(gè)spring-config.xml配置文件。
Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean
配置內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

2. 創(chuàng)建Bean對(duì)象

第一步,創(chuàng)建Bean對(duì)象。
比如我們要注入一個(gè)Student對(duì)象,就先的創(chuàng)建一個(gè)Student類。

package com.tr.demo;

public class Student {
    public void sayHi(String name) {
        System.out.println("Hello!" + name );
    }
}

然后將Bean通過(guò)配置文件,注入到spring中,即在spring配置文件中通過(guò)以下語(yǔ)句注入。

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

spring中對(duì)象的儲(chǔ)存是通過(guò)鍵值對(duì)來(lái)存儲(chǔ)的,其中keyid,valuebeanid一般使用小駝峰命名。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

3. 讀取Bean對(duì)象

想要從 Spring 中將Bean對(duì)象讀取出來(lái),先要得到 Spring 上下文對(duì)象,相當(dāng)于得到了 Spring 容器。

再通過(guò) spring 上下文對(duì)象提供的方法獲取到需要使用的Bean對(duì)象,最后就能使用Bean對(duì)象了。

ApplicationContext,也稱為控制反轉(zhuǎn)(IoC)容器,是 Spring 框架的核心。

實(shí)現(xiàn)類 描述
ClassPathXmlApplicationContext(常用) 加載類路徑下的配置文件,要求配置文件必須在類路徑下
FileSystemXmlApplicationContext 可以加載磁盤任意路徑下的配置文件(必須要有訪問(wèn)權(quán)限)
AnnotationContigApplicationContext 用于讀取注解創(chuàng)建容器
import com.tr.demo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP {
    public static void main(String[] args) {
        // 1. 得到上下文對(duì)象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 獲取 bean 對(duì)象,這里根據(jù) id 獲取
        Student student = (Student) context.getBean("student");
        // 3. 使用 bean 
        student.sayHi("張三");
    }
}

運(yùn)行結(jié)果:

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

還可以使用 Bean 工廠(舊)來(lái)獲取 Bean。

import com.tr.demo.Student;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class APP2 {
    public static void main(String[] args) {
        // 1. 得到 bean 工廠
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        // 2. 獲取 bean 對(duì)象
        Student student = (Student) factory.getBean("student");
        // 3. 使用 bean
        student.sayHi("李四");
    }
}

但實(shí)際上并不推薦使用這種方式,算是過(guò)時(shí)代的方式了,因?yàn)榕f時(shí)期需要考慮內(nèi)存占用的問(wèn)題,而現(xiàn)在內(nèi)存資源沒(méi)有這樣的問(wèn)題了。

運(yùn)行結(jié)果:

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

此時(shí)我們可以發(fā)現(xiàn),ApplicationContextBeanFactory都可以從容器中獲取Bean,都提供了getBean方法,最終的效果是一樣的。

??那么,ApplicationContextBeanFactory有什么區(qū)別?
??相同點(diǎn):

  • 都是容器管理對(duì)象,都可以從容器中獲取Bean,都提供了getBean方法。

??不同點(diǎn):

  • ApplicationContextBeanFactory的子類, BeanFactory只提供了基礎(chǔ)訪問(wèn)Bean對(duì)象的功能,而ApplicationContext除了擁有 BeanFactory的全部功能,還有其他額外功能的實(shí)現(xiàn),如國(guó)際化,資源訪問(wèn)以及事務(wù)傳播方面等功能的支持。
  • 它們兩加載Bean的機(jī)制也是不同的,BeanFactory按需加載Bean,屬于懶漢方式,使用它程序啟動(dòng)快,在后期獲取對(duì)象時(shí)會(huì)慢一些;而ApplicationContext是餓漢方式,在創(chuàng)建時(shí)會(huì)將一次性將所有的Bean都加載,這種方式啟動(dòng)慢,啟動(dòng)之后獲取對(duì)象就非??炝?。

這里驗(yàn)證一下他們兩的加載機(jī)制:
我們?cè)?com.tr.demo 目錄下再添加一個(gè)Teacher類,并完善TeacherStudent類的構(gòu)造方法,這樣當(dāng)類被構(gòu)造時(shí)會(huì)給出一些提示信息,在獲取上下文或工廠時(shí)根據(jù)這些信息我們就可以知道Bean是否會(huì)被構(gòu)造。

package com.tr.demo;

public class Teacher {
    public Teacher() {
        System.out.println("Teacher 已加載!");
    }
    public void sayHi(String name) {
        System.out.println("Hello!" + name );
    }
}

package com.tr.demo;

public class Student {
    public Student() {
        System.out.println("Student 已加載!");
    }
    public void sayHi(String name) {
        System.out.println("Hello!" + name );
    }
}

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP3 {
    public static void main(String[] args) {
        // 1. 得到上下文對(duì)象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
    }
}

運(yùn)行結(jié)果:

程序啟動(dòng),ApplicationContext創(chuàng)建時(shí),會(huì)將所有的Bean對(duì)象都構(gòu)造,類似于餓漢的方式。
Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class APP4 {
    public static void main(String[] args) {
        // 1. 得到 bean 工廠
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    }
}

運(yùn)行結(jié)果:

程序啟動(dòng),在BeanFactory創(chuàng)建時(shí),結(jié)果中沒(méi)有如何輸出,只要不去獲取使用Bean就不會(huì)去加載,類似于懶漢的方式。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,beangetBean方法,其實(shí)是有三種使用方式的,具體如下:
1??方式1:根據(jù)Bean的名字來(lái)獲取

Student student = (Student) context.getBean("student");

這種方式返回的是一個(gè)Object對(duì)象,需要我們?nèi)ミM(jìn)行強(qiáng)制類型轉(zhuǎn)換。

2??方式2:根據(jù)Bean類型獲取

Student student = context.getBean(Student.class);

這種方式當(dāng)beans中只有一個(gè)類的實(shí)例沒(méi)有問(wèn)題,但是個(gè)有多個(gè)同類的實(shí)例,會(huì)有問(wèn)題,即在 Spring 中注入多個(gè)同一個(gè)類的對(duì)象,就會(huì)報(bào)錯(cuò)。

我們來(lái)試一下,首先在 Spring 配置文件,注入多個(gè)Student對(duì)象:
Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean
然后我們?cè)偻ㄟ^(guò)這種方式來(lái)獲取對(duì)象,運(yùn)行結(jié)果如下:

拋出了一個(gè)NoUniqueBeanDefinitionException異常,這表示注入的對(duì)象不是唯一的。

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

3??方式3:根據(jù)名稱 + 類型獲取

Student student = context.getBean("student",Student.class);

相比方式1,更加健壯和優(yōu)雅,也沒(méi)有方式 2 中的問(wèn)題

Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

總結(jié)

通篇下來(lái)涉及以下流程:

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

②存儲(chǔ) Bean

  1. 先創(chuàng)建 Bean 對(duì)象
  2. 將 Bean 在 pring-config.xml 中進(jìn)行配置

③取對(duì)象文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-580857.html

  1. 得到 Spring 上下文,讀取 Spring 配置文件
  2. 獲取 Bean 對(duì)象
  3. 使用 Bean 對(duì)象(可選項(xiàng))
    Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL),JavaEE,spring,java,后端,國(guó)內(nèi)源,bean

到了這里,關(guān)于Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL)的文章就介紹完了。如果您還想了解更多內(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中Bean對(duì)象的存儲(chǔ)與讀取

    Spring中Bean對(duì)象的存儲(chǔ)與讀取

    在項(xiàng)目的 pom.xml 中添加 Spring 支持 如何選定版本環(huán)境:打開官網(wǎng),點(diǎn)擊github圖標(biāo) jdk8最后一個(gè)Spring版本是5.3.x,Spring6.0.x最低需要jdk17 版本沖突問(wèn)題Maven自己處理 version : 可以選擇帶有 RELEASE結(jié)尾或者純數(shù)字結(jié)尾,這樣的版本更穩(wěn)定 項(xiàng)目下創(chuàng)建一個(gè)main方法的啟動(dòng)類 存儲(chǔ) Bean 之前

    2024年01月24日
    瀏覽(22)
  • Spring更簡(jiǎn)單的存儲(chǔ)和讀取Bean對(duì)象

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

    目錄 1.第一個(gè)Spring項(xiàng)目 2.存儲(chǔ)Bean對(duì)象 2.1 準(zhǔn)備工作 2.2?五大類注解 2.3?方法注解@Bean 2.4 Bean對(duì)象的默認(rèn)命名規(guī)則 3. 讀取Bean對(duì)象 3.1 屬性注入 3.2 setter注入 3.3 構(gòu)造方法注入 3.4 注入異常問(wèn)題 3.5 注入方式優(yōu)缺點(diǎn) 3.6 @Autowired和@Resource的區(qū)別 在學(xué)習(xí)更簡(jiǎn)單的方式來(lái)讀取和存儲(chǔ)Bean對(duì)象

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

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

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

    2024年02月15日
    瀏覽(17)
  • 【JavaEE進(jìn)階】Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    【JavaEE進(jìn)階】Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    配置掃描路徑是使用注解之前的前置工作,是非常重要的,是必須的操作項(xiàng).只有被配置的包下的所有類,添加了注解才能被正確的識(shí)別并保存到 Spring 中. 首先創(chuàng)建一個(gè)Spring項(xiàng)目.創(chuàng)建好后,第一步就是配置掃描路徑:在 resources 目錄中創(chuàng)建一個(gè) spring-config.xml 文件.然后在 spring-config.

    2024年02月12日
    瀏覽(23)
  • 使用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日
    瀏覽(24)
  • JavaEE 突擊 5 - Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象(2)

    JavaEE 突擊 5 - Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象(2)

    大家新年快樂(lè) , 祝大家新的一年如圖 這個(gè)專欄給大家介紹一下 Java 家族的核心產(chǎn)品 - SSM 框架 JavaEE 進(jìn)階專欄 Java 語(yǔ)言能走到現(xiàn)在 , 仍然屹立不衰的原因 , 有一部分就是因?yàn)?SSM 框架的存在 接下來(lái) , 博主會(huì)帶大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相關(guān)知識(shí)點(diǎn) 并且?guī)ьI(lǐng)

    2024年02月19日
    瀏覽(22)
  • 【JavaEE】Spring Boot - 項(xiàng)目的創(chuàng)建和使用

    【JavaEE】Spring Boot - 項(xiàng)目的創(chuàng)建和使用

    【JavaEE】Spring Boot 開發(fā)要點(diǎn)總結(jié)(1) Spring框架是為了簡(jiǎn)化Java程序的開發(fā)的,而Spring Boot框架則是為了簡(jiǎn)化Spring程序開發(fā)的 Spring Boot,也就是Spring 腳手架 現(xiàn)實(shí)中的腳手架是這樣的: 通過(guò)這個(gè)腳手架,我們就可以更快速方便的蓋房子,并且房子建得會(huì)更好 而Spring Boot,就是S

    2024年02月14日
    瀏覽(24)
  • JavaEE——Spring中存取Bean的注解

    JavaEE——Spring中存取Bean的注解

    目錄 一、存儲(chǔ)Bean對(duì)象 1、定義 2、存儲(chǔ)方式 (1)、類注解 【1】、@Controller(控制器存儲(chǔ)) 【2】、@Service(服務(wù)存儲(chǔ)) 【3】、@Repository(倉(cāng)庫(kù)存儲(chǔ)) 【4】、@Component(組件存儲(chǔ)) 【5】、@Configuration(配置存儲(chǔ)) (2)、方法注解@Bean 3、重命名Bean 二、獲取Bean對(duì)象 1、注入關(guān)

    2024年02月16日
    瀏覽(24)
  • javaee spring配置文件bean標(biāo)簽詳解

    bean標(biāo)簽中添加scope屬性,設(shè)置bean對(duì)應(yīng)對(duì)象生成規(guī)則. scope = “singleton” 單例,默認(rèn)值,適用于實(shí)際開發(fā)中的絕大部分情況. scope=“prototype” 多例,適用于struts2中的action配置 注意: 只對(duì)單例有效,設(shè)置scope=\\\"singleton\\\"時(shí)測(cè)試 延時(shí)創(chuàng)建屬性. lazy-init=“false” 默認(rèn)值,不延遲創(chuàng)建,即在啟動(dòng)時(shí)

    2024年02月11日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包