亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談一下Spring的核心基礎(chǔ)IOC與DI

 更新時(shí)間:2023年03月27日 09:09:42   作者:黑洞曉威  
這篇文章主要介紹了Spring的核心基礎(chǔ)IOC與DI的詳細(xì)用法,spring技術(shù)是現(xiàn)在企業(yè)開(kāi)發(fā)中幾乎必備的技術(shù)選型,那么學(xué)好spring就很重要,本篇著重講解spring的核心機(jī)制,IOD與DI,一起來(lái)看看吧

一、Spring簡(jiǎn)介

1 Spring介紹

1.1 為什么要學(xué)

Spring技術(shù)是JavaEE開(kāi)發(fā)必備技能,企業(yè)開(kāi)發(fā)技術(shù)選型命中率>90%

專(zhuān)業(yè)角度

簡(jiǎn)化開(kāi)發(fā),降低企業(yè)級(jí)開(kāi)發(fā)的復(fù)雜性框架整合,高效整合其他技術(shù),提高企業(yè)級(jí)應(yīng)用開(kāi)發(fā)與運(yùn)行效率

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-FDNH5J13-1677810411916)(assets/image-20210729171139088.png)]

1.2 學(xué)什么

簡(jiǎn)化開(kāi)發(fā)

  •         IOC(反轉(zhuǎn)控制)
  •         AOP(面向切面編程)
  •                 事務(wù)處理

框架整合

  • MyBatis
  • MyBatis-plus
  • Struts
  • Struts2
  • Hibernate……

2 初識(shí)Spring

2.1 Spring家族

官網(wǎng):https://spring.ioSpring發(fā)展到今天已經(jīng)形成了一種開(kāi)發(fā)的生態(tài)圈,Spring提供了若干個(gè)項(xiàng)目,每個(gè)項(xiàng)目用于完成特定的功能。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-BpSEydhD-1677810411917)(assets/image-20210729171850181.png)]

2.2 Spring發(fā)展史

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-QPSirvHj-1677810411918)(assets/image-20210729171926576.png)]

注意:現(xiàn)在已經(jīng)有spring6了哦!

3 Spring體系結(jié)構(gòu)

3.1 Spring Framework系統(tǒng)架構(gòu)圖

Spring Framework是Spring生態(tài)圈中最基礎(chǔ)的項(xiàng)目,是其他項(xiàng)目的根基

在這里插入圖片描述

4 Spring核心概念

問(wèn)題導(dǎo)入

4.1 核心概念

IOC(Inversion of Control)控制反轉(zhuǎn)

使用對(duì)象時(shí),由主動(dòng)new產(chǎn)生對(duì)象轉(zhuǎn)換為由外部提供對(duì)象,此過(guò)程中對(duì)象創(chuàng)建控制權(quán)由程序轉(zhuǎn)移到外部,此思想稱(chēng)為控制反轉(zhuǎn)。通俗的講就是“將new對(duì)象的權(quán)利交給Spring,我們從Spring中獲取對(duì)象使用即可

Spring技術(shù)對(duì)IoC思想進(jìn)行了實(shí)現(xiàn)

Spring提供了一個(gè)容器,稱(chēng)為IOC容器,用來(lái)充當(dāng)IoC思想中的“外部”IOC容器負(fù)責(zé)對(duì)象的創(chuàng)建、初始化等一系列工作,被創(chuàng)建或被管理的對(duì)象在IoC容器中統(tǒng)稱(chēng)為Bean

DI(Dependency Injection)依賴(lài)注入

在容器中建立bean與bean之間的依賴(lài)關(guān)系的整個(gè)過(guò)程,稱(chēng)為依賴(lài)注入。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-x9hRaYAX-1677810411920)(assets/image-20210729174148134.png)]

目標(biāo):充分解耦

  • 使用IoC容器管理bean(IOC)
  • 在IoC容器內(nèi)將有依賴(lài)關(guān)系的bean進(jìn)行關(guān)系綁定(DI)

最終效果

  • 使用對(duì)象時(shí)不僅可以直接從IoC容器中獲取,并且獲取到的bean已經(jīng)綁定了所有的依賴(lài)關(guān)系

二、IOC和DI入門(mén)

1 IOC入門(mén)

問(wèn)題導(dǎo)入

<bean>標(biāo)簽中id屬性和class屬性的作用是什么?

1.1 門(mén)案例思路分析

管理什么?(Service與Dao)

如何將被管理的對(duì)象告知IOC容器?(配置文件)

被管理的對(duì)象交給IOC容器,如何獲取到IoC容器?(接口)

IOC容器得到后,如何從容器中獲取bean?(接口方法)

使用Spring導(dǎo)入哪些坐標(biāo)?(pom.xml)

1.2 實(shí)現(xiàn)步驟

【第一步】導(dǎo)入Spring坐標(biāo)
【第二步】定義Spring管理的類(lèi)(接口)
【第三步】創(chuàng)建Spring配置文件,配置對(duì)應(yīng)類(lèi)作為Spring管理的bean對(duì)象
【第四步】初始化IOC容器(Spring核心容器/Spring容器),通過(guò)容器獲取bean對(duì)象

1.3 實(shí)現(xiàn)代碼

【第一步】導(dǎo)入Spring坐標(biāo)

<dependencies>
    <!--導(dǎo)入spring的坐標(biāo)spring-context,對(duì)應(yīng)版本是5.2.10.RELEASE-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>

【第二步】定義Spring管理的類(lèi)(接口)

BookDao接口和BookDaoImpl實(shí)現(xiàn)類(lèi)

public interface BookDao {
    public void save();
}

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }
}

BookService接口和BookServiceImpl實(shí)現(xiàn)類(lèi)

public interface BookService {
    public void save();
}

public class BookServiceImpl implements BookService {
    private BookDao bookDao = new BookDaoImpl();
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}

【第三步】創(chuàng)建Spring配置文件,配置對(duì)應(yīng)類(lèi)作為Spring管理的bean對(duì)象

定義applicationContext.xml配置文件并配置BookServiceImpl

<?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">
 
    <!--
		bean標(biāo)簽:表示配置bean
    	id屬性:表示給bean起名字
    	class屬性:表示給bean定義類(lèi)型
	-->
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"></bean>

</beans>

注意事項(xiàng):bean定義時(shí)id屬性在同一個(gè)上下文中(IOC容器中)不能重復(fù)

【第四步】初始化IOC容器(Spring核心容器/Spring容器),通過(guò)容器獲取Bean對(duì)象

public class App {
    public static void main(String[] args) {
        //1.創(chuàng)建IoC容器對(duì)象,加載spring核心配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2 從IOC容器中獲取Bean對(duì)象(BookService對(duì)象)
        BookService bookService= (BookService)ctx.getBean("bookService");
        //3 調(diào)用Bean對(duì)象(BookService對(duì)象)的方法
        bookService.save();
    }
}

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

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-HBvFCnTA-1677810411920)(assets/image-20210729184337603.png)]

2 DI入門(mén)

<property>標(biāo)簽中name屬性和ref屬性的作用是什么?

2.1 DI入門(mén)思路分析

基于IOC管理bean

Service中使用new形式創(chuàng)建的Dao對(duì)象是否保留?(否)

Service中需要的Dao對(duì)象如何進(jìn)入到Service中?(提供方法)

Service與Dao間的關(guān)系如何描述?(配置)

2.2 實(shí)現(xiàn)步驟

【第一步】刪除使用new的形式創(chuàng)建對(duì)象的代碼
【第二步】提供依賴(lài)對(duì)象對(duì)應(yīng)的setter方法
【第三步】配置service與dao之間的關(guān)系

2.3 實(shí)現(xiàn)代碼

【第一步】刪除使用new的形式創(chuàng)建對(duì)象的代碼

public class BookServiceImpl implements BookService {
    private BookDao bookDao;  //【第一步】刪除使用new的形式創(chuàng)建對(duì)象的代碼
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}

【第二步】提供依賴(lài)對(duì)象對(duì)應(yīng)的setter方法

public class BookServiceImpl implements BookService {
    private BookDao bookDao;
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
    //【第二步】提供依賴(lài)對(duì)象對(duì)應(yīng)的setter方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

【第三步】配置service與dao之間的關(guān)系

在applicationContext.xml中配置

<?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">
    <!--
		bean標(biāo)簽:表示配置bean
    	id屬性:表示給bean起名字
    	class屬性:表示給bean定義類(lèi)型
	-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>

    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
        <!--配置server與dao的關(guān)系
			property標(biāo)簽:表示配置當(dāng)前bean的屬性
        	name屬性:表示配置哪一個(gè)具體的屬性
        	ref屬性:表示參照哪一個(gè)bean
		-->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

2.4 圖解演示

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-X6PKpE7n-1677810411920)(assets/image-20210729183104748.png)]

到此這篇關(guān)于淺談一下Spring的核心基礎(chǔ)IOC與DI的文章就介紹到這了,更多相關(guān)Spring的核心基礎(chǔ)IOC與DI內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • maven工程中讀取resources中的資源文件

    maven工程中讀取resources中的資源文件

    Web項(xiàng)目中應(yīng)該經(jīng)常有這樣的需求,在maven項(xiàng)目的resources目錄下放一些文件,比如一些配置文件,資源文件等,本文主要介紹了maven工程中讀取resources中的資源文件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 如何解決 Java 中的 IndexOutOfBoundsException 異常(最新推薦)

    如何解決 Java 中的 IndexOutOfBoundsException 異

    當(dāng)我們?cè)?nbsp;Java 中使用 List 的時(shí)候,有時(shí)候會(huì)出現(xiàn)向 List 中不存在的位置設(shè)置新元素的情況,從而導(dǎo)致 IndexOutOfBoundsException 異常,本文將會(huì)介紹這個(gè)問(wèn)題的產(chǎn)生原因以及解決方案
    2023-10-10
  • Spring?MVC策略模式之MethodArgumentResolver源碼解析

    Spring?MVC策略模式之MethodArgumentResolver源碼解析

    這篇文章主要為大家介紹了Spring?MVC策略模式之MethodArgumentResolver源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • java事務(wù)的概念淺析

    java事務(wù)的概念淺析

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于java事務(wù)的概念淺析,有興趣的朋友們可以參考學(xué)習(xí)下。
    2020-12-12
  • 學(xué)習(xí)不同 Java.net 語(yǔ)言中類(lèi)似的函數(shù)結(jié)構(gòu)

    學(xué)習(xí)不同 Java.net 語(yǔ)言中類(lèi)似的函數(shù)結(jié)構(gòu)

    這篇文章主要介紹了學(xué)習(xí)不同 Java.net 語(yǔ)言中類(lèi)似的函數(shù)結(jié)構(gòu),函數(shù)式編程語(yǔ)言包含多個(gè)系列的常見(jiàn)函數(shù)。但開(kāi)發(fā)人員有時(shí)很難在語(yǔ)言之間進(jìn)行切換,因?yàn)槭煜さ暮瘮?shù)具有不熟悉的名稱(chēng)。函數(shù)式語(yǔ)言傾向于基于函數(shù)范例來(lái)命名這些常見(jiàn)函數(shù)。,需要的朋友可以參考下
    2019-06-06
  • mybatis中幾種typeHandler的定義使用詳解

    mybatis中幾種typeHandler的定義使用詳解

    本文主要介紹了mybatis中幾種typeHandler的定義使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • javaweb啟動(dòng)時(shí)啟動(dòng)socket服務(wù)端代碼實(shí)現(xiàn)

    javaweb啟動(dòng)時(shí)啟動(dòng)socket服務(wù)端代碼實(shí)現(xiàn)

    這篇文章主要介紹了javaweb啟動(dòng)時(shí)啟動(dòng)socket服務(wù)端代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 基于JAVA每月運(yùn)勢(shì)api調(diào)用代碼實(shí)例

    基于JAVA每月運(yùn)勢(shì)api調(diào)用代碼實(shí)例

    這篇文章主要為大家詳細(xì)介紹了JAVA每月運(yùn)勢(shì)api調(diào)用代碼實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • java 如何將多種字符串格式 解析為Date格式

    java 如何將多種字符串格式 解析為Date格式

    這篇文章主要介紹了java 如何將多種字符串格式 解析為Date格式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java ThreadLocal的設(shè)計(jì)理念與作用

    Java ThreadLocal的設(shè)計(jì)理念與作用

    這篇文章主要介紹了Java ThreadLocal的設(shè)計(jì)理念與作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論