欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring核心之IOC與bean超詳細講解

 更新時間:2022年10月28日 11:05:22   作者:showswoller  
IOC-Inversion of Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

Spring是一個開源框架 它能夠降低開發(fā)企業(yè)應(yīng)用程序的復(fù)雜性 它以IOC(控制反轉(zhuǎn))和AOP(面向切面編程)兩種先進的技術(shù)為基礎(chǔ) 完美地簡化了企業(yè)級開發(fā)的復(fù)雜度

一、Spring的簡介和獲取

Spring有七大模塊

1:核心模塊

Spring Core模塊是Spring的核心容器 它實現(xiàn)了IOC模式 提供了Spring框架的基礎(chǔ)功能,在模塊中包含最重要的BeanFactory類是Spring的核心類 負責(zé)對JavaBean的配置與管理

2:Context模塊

Spring Context模塊繼承BeanFactory類并且添加了事件處理 國際化 資源裝載 透明裝載等功能

3:AOP模塊

Spring集成了所有AOP功能 通過事務(wù)管理可以使任意Spring管理的對象AOP化

4:DAO模塊

提供了JDBC的抽象層 簡化了數(shù)據(jù)庫廠商的異常錯誤

5:O/R模塊

提供了對現(xiàn)有ORM框架的支持

6:Web模塊

Spring Web模塊建立在Spring Context基礎(chǔ)之上 它提供了Servlet監(jiān)聽器的Context和Web應(yīng)用的上下文

7:MVC模塊

Spring Web MVC模塊建立在Spring核心功能之上 使得它擁有Spring框架的所有特性

Spring的獲取

Spring官網(wǎng)

Spring內(nèi)置了日志組件log4.jar 所以在正式使用Spring之前需要對log4j進行簡單的配置

在項目的src根目錄下創(chuàng)建log4j.properties屬性文件 代碼如下

log4j.rootLogger=WARN,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d%p[[%c]-%m%n

Spring配置結(jié)構(gòu)如下

使用BeanFactory管理Bean

以裝載Bean為例 代碼如下

Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(resource);
Test test=(Test)factory.getBean("test");

AplicationContext的應(yīng)用

在Spring中大多采用AplicationContext容器來開發(fā)企業(yè)級的程序 接下來介紹它的三個實現(xiàn)類

1:ClassPathXmlApplicationContext類

它從當(dāng)前類路徑中檢索配置文件并裝載它來創(chuàng)建容器的實例

ApplicationContext context=new ClassPathXmlApplicationContext(String configLocation);

2:FileSystemXmlApplicationContext類

它和上面的區(qū)別在于讀取Spring配置文件的方式 它不再從類路徑中獲取配置文件 而是通過參數(shù)指定配置文件的位置

ApplcationContext context=new FileSystemXmlApplicationContext(String configLocation);

4:WebApplicationContext類

它是Spring的Web應(yīng)用容器

二、依賴注入與IOC

什么是控制反轉(zhuǎn)與依賴注入?

IOC 控制反轉(zhuǎn) 它使程序組件或類之間盡量形成一種松耦合的結(jié)構(gòu),開發(fā)者在使用類的實例之前,需要先創(chuàng)建類的實例,但是IOC將創(chuàng)建實例的任務(wù)交給IOC容器,這樣開發(fā)應(yīng)用代碼時只需要直接使用類的實例 這就是IOC

依賴注入有三種形式 Spring支持后兩種

1、接口注入

基于接口將調(diào)用與實現(xiàn)分離

2、Setter注入

基于JavaBean的Setter方法為屬性賦值 在實際開發(fā)中得到了最廣泛的應(yīng)用

public class User{
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}

3、構(gòu)造器注入

基于構(gòu)造方法為屬性賦值 容器通過調(diào)用類的構(gòu)造方法 將其所需的依賴關(guān)系注入其中

public class User{
private String name;
public User(String name){
this.name=name;
}
}

bean的配置

<bean id="test" class="com.mr.Test"/>
id屬性為bean的名稱 class屬性為對應(yīng)的類名 

引用其他的bean

在Spring中可以通過配置文件使用<ref>元素引用其他的JavaBean的實例對象

<ref local="user"/>

三、自動裝配

<bean>元素的autowise屬性負責(zé)自動裝備<bean>標(biāo)簽定義的JavaBaen的屬性 這樣做可以省去很多配置JavaBean屬性的標(biāo)簽代碼

1、按Bean名稱裝配

<bean>元素的byname屬性以屬性名區(qū)分自動裝配,在容器中尋找與JavaBean的屬性名相同的JavaBean并將其自動裝配到JavaBean中

<bean auotwise="byName" id="printInfo" class="com.mr.user.PringInfo"/>

2、按bean類型裝配

Spring以bean類型區(qū)分自動裝配 容器會自動尋找與JavaBean屬性類型相同的JavaBean的定義 并將其注入到需要自動裝配的JavaBean中

<bean auotwise="byType" id="printInfo" class="com.mr.user.PringInfo"/>

四、bean的作用域

在Spring中,那些組成應(yīng)用的主題及由Spring IOC容器所管理的對象被稱為bean,簡單地講,bean就是由Spring容器初始化,裝備及被管理的對象

1、singleton的作用域

當(dāng)Spring中一個bean作用域為singleton時,那么Spring IOC容器中只會存在一個共享的該bean實例,并且所有對該bean的引用 只要id與該bean定義相匹配,則只會返回bean的單一實例

<bean id="test" class="com.mr.Test"/>
<bean id="test" class="com.mr.Test"/ singleton="true"/>
<bean id="test" class="com.mr.Test"/scope="singleton"/>

2、prototype作用域

prototype作用域的bean會導(dǎo)致在每次對該bean請求時都會創(chuàng)建一個新的bean實例,

對所有有狀態(tài)的bean應(yīng)該使用prototype作用域 無狀態(tài)的bean應(yīng)該使用singleton作用域

<bean id="test" class="com.mr.Test" singleton="false"/>
<bean id="test" class="com.mr.Test" scope="prototype"/>

到此這篇關(guān)于Spring核心之IOC與bean超詳細講解的文章就介紹到這了,更多相關(guān)Spring IOC與bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解JAVA里面獲取map的key和value的方法

    詳解JAVA里面獲取map的key和value的方法

    這篇文章主要介紹了詳解JAVA里面獲取map的key和value的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 走進SpringBoot之配置文件與多環(huán)境詳解

    走進SpringBoot之配置文件與多環(huán)境詳解

    這篇文章主要介紹了走進SpringBoot之配置文件與多環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • SpringBoot集成Graphql Query實戰(zhàn)示例

    SpringBoot集成Graphql Query實戰(zhàn)示例

    這篇文章主要為大家介紹了SpringBoot集成Graphql Query實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • maven中配置項目的jdk版本無效的排查方式

    maven中配置項目的jdk版本無效的排查方式

    這篇文章主要介紹了maven中配置項目的jdk版本無效的排查方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • SpringBoot任務(wù)調(diào)度器的實現(xiàn)代碼

    SpringBoot任務(wù)調(diào)度器的實現(xiàn)代碼

    SpringBoot自帶了任務(wù)調(diào)度器,通過注解的方式使用。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • SpringBoot獲取當(dāng)前運行環(huán)境三種方式小結(jié)

    SpringBoot獲取當(dāng)前運行環(huán)境三種方式小結(jié)

    在使用SpringBoot過程中,我們只需要引入相關(guān)依賴,然后在main方法中調(diào)用SpringBootApplication.run(應(yīng)用程序啟動類.class)方法即可,那么SpringBoot是如何獲取當(dāng)前運行環(huán)境呢,接下來由小編給大家介紹一下SpringBoot獲取當(dāng)前運行環(huán)境三種方式,需要的朋友可以參考下
    2024-01-01
  • Java數(shù)組的遍歷與求和知識點

    Java數(shù)組的遍歷與求和知識點

    本篇文章給大家總計了Java數(shù)組的遍歷與求和的知識點以及需要注意的地方,需要的朋友參考學(xué)習(xí)下。
    2018-02-02
  • Java中jar包運行后顯示:沒有主清單屬性的解決方案

    Java中jar包運行后顯示:沒有主清單屬性的解決方案

    這篇文章主要介紹了Java中jar包運行后顯示:沒有主清單屬性的解決方案,文中給大家分析了三個主要原因,并通過代碼示例和圖文講解的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 輕松理解Java面試和開發(fā)中的IoC(控制反轉(zhuǎn))

    輕松理解Java面試和開發(fā)中的IoC(控制反轉(zhuǎn))

    在Java開發(fā)中,IoC意 味著將你設(shè)計好的類交給系統(tǒng)去控制,而不是在你的類內(nèi)部控制。這稱為控制反轉(zhuǎn)。下文給大家介紹Java面試和開發(fā)中的IoC(控制反轉(zhuǎn))知識,需要的朋友參考下吧
    2017-07-07
  • SpringBoot系列教程之防重放與操作冪等

    SpringBoot系列教程之防重放與操作冪等

    同一條數(shù)據(jù)被用戶點擊了多次,導(dǎo)致數(shù)據(jù)冗余,需要防止弱網(wǎng)絡(luò)等環(huán)境下的重復(fù)點擊,下面這篇文章主要給大家介紹了關(guān)于SpringBoot系列教程之防重放與操作冪等的相關(guān)資料,需要的朋友可以參考下
    2022-04-04

最新評論