最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談一下Spring的核心基礎IOC與DI

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

一、Spring簡介

1 Spring介紹

1.1 為什么要學

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

專業(yè)角度

簡化開發(fā),降低企業(yè)級開發(fā)的復雜性框架整合,高效整合其他技術,提高企業(yè)級應用開發(fā)與運行效率

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

1.2 學什么

簡化開發(fā)

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

框架整合

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

2 初識Spring

2.1 Spring家族

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

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

2.2 Spring發(fā)展史

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

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

3 Spring體系結構

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

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

在這里插入圖片描述

4 Spring核心概念

問題導入

4.1 核心概念

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

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

Spring技術對IoC思想進行了實現(xiàn)

Spring提供了一個容器,稱為IOC容器,用來充當IoC思想中的“外部”IOC容器負責對象的創(chuàng)建、初始化等一系列工作,被創(chuàng)建或被管理的對象在IoC容器中統(tǒng)稱為Bean

DI(Dependency Injection)依賴注入

在容器中建立bean與bean之間的依賴關系的整個過程,稱為依賴注入。

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

目標:充分解耦

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

最終效果

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

二、IOC和DI入門

1 IOC入門

問題導入

<bean>標簽中id屬性和class屬性的作用是什么?

1.1 門案例思路分析

管理什么?(Service與Dao)

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

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

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

使用Spring導入哪些坐標?(pom.xml)

1.2 實現(xiàn)步驟

【第一步】導入Spring坐標
【第二步】定義Spring管理的類(接口)
【第三步】創(chuàng)建Spring配置文件,配置對應類作為Spring管理的bean對象
【第四步】初始化IOC容器(Spring核心容器/Spring容器),通過容器獲取bean對象

1.3 實現(xiàn)代碼

【第一步】導入Spring坐標

<dependencies>
    <!--導入spring的坐標spring-context,對應版本是5.2.10.RELEASE-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>

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

BookDao接口和BookDaoImpl實現(xiàn)類

public interface BookDao {
    public void save();
}

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

BookService接口和BookServiceImpl實現(xiàn)類

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配置文件,配置對應類作為Spring管理的bean對象

定義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標簽:表示配置bean
    	id屬性:表示給bean起名字
    	class屬性:表示給bean定義類型
	-->
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"></bean>

</beans>

注意事項:bean定義時id屬性在同一個上下文中(IOC容器中)不能重復

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

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

1.4 運行結果

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

2 DI入門

<property>標簽中name屬性和ref屬性的作用是什么?

2.1 DI入門思路分析

基于IOC管理bean

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

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

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

2.2 實現(xiàn)步驟

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

2.3 實現(xiàn)代碼

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

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

【第二步】提供依賴對象對應的setter方法

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

【第三步】配置service與dao之間的關系

在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標簽:表示配置bean
    	id屬性:表示給bean起名字
    	class屬性:表示給bean定義類型
	-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>

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

2.4 圖解演示

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

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

相關文章

  • Java基礎之創(chuàng)建虛擬機對象的過程詳細總結

    Java基礎之創(chuàng)建虛擬機對象的過程詳細總結

    本文基于虛擬機HotSpot和常用的內(nèi)存區(qū)域Java堆深入對象分配、布局和訪問的全過程,文中有非常詳細的圖文解說,對正在學習java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java實現(xiàn) 基于密度的局部離群點檢測------lof算法

    Java實現(xiàn) 基于密度的局部離群點檢測------lof算法

    這篇文章主要介紹了Java實現(xiàn) 基于密度的局部離群點檢測------lof算法,本文通過算法概述,算法Java源碼,測試結果等方面一一進行說明,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • SpringSecurity安全框架在SpringBoot框架中的使用詳解

    SpringSecurity安全框架在SpringBoot框架中的使用詳解

    在Spring?Boot框架中,Spring?Security是一個非常重要的組件,它可以幫助我們實現(xiàn)應用程序的安全性,本文將詳細介紹Spring?Security在Spring?Boot框架中的使用,包括如何配置Spring?Security、如何實現(xiàn)身份驗證和授權、如何防止攻擊等
    2023-06-06
  • 深入理解java異常處理機制的原理和開發(fā)應用

    深入理解java異常處理機制的原理和開發(fā)應用

     Java異常處理機制在日常開發(fā)中應用頻繁,本篇文章主要在基礎的使用方法上,更進一步的,如何更加合理的使用異常機制,希望可以對各位朋友能有所幫助。
    2017-04-04
  • Elasticsearch外部詞庫文件更新及使用

    Elasticsearch外部詞庫文件更新及使用

    這篇文章主要為大家介紹了Elasticsearch外部詞庫文件更新及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java知識點歸納 —給Java新手的一些建議(新手必看)

    Java知識點歸納 —給Java新手的一些建議(新手必看)

    以下簡單介紹了下我對于這些java基本知識點和技術點的一些看法和心得,這些內(nèi)容都源自于我這些年來使用java的一些總結
    2016-05-05
  • Spring boot搭建郵件服務的完整步驟

    Spring boot搭建郵件服務的完整步驟

    這篇文章主要給大家介紹了關于Spring boot搭建郵件服務的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • 詳解Java回調(diào)的原理與實現(xiàn)

    詳解Java回調(diào)的原理與實現(xiàn)

    回調(diào)函數(shù),顧名思義,用于回調(diào)的函數(shù)。回調(diào)函數(shù)只是一個功能片段,由用戶按照回調(diào)函數(shù)調(diào)用約定來實現(xiàn)的一個函數(shù)?;卣{(diào)函數(shù)是一個工作流的一部分,由工作流來決定函數(shù)的調(diào)用(回調(diào))時機。
    2017-03-03
  • SpringBoot事件發(fā)布和監(jiān)聽詳解

    SpringBoot事件發(fā)布和監(jiān)聽詳解

    今天去官網(wǎng)查看spring boot資料時,在特性中看見了系統(tǒng)的事件及監(jiān)聽章節(jié),所以下面這篇文章主要給大家介紹了關于SpringBoot事件發(fā)布和監(jiān)聽的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-11-11
  • SpringBoot Redis緩存數(shù)據(jù)實現(xiàn)解析

    SpringBoot Redis緩存數(shù)據(jù)實現(xiàn)解析

    這篇文章主要介紹了SpringBoot Redis緩存數(shù)據(jù)實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論

建水县| 晋中市| 西乌珠穆沁旗| 苍梧县| 华容县| 德兴市| 梅河口市| 罗定市| 民乐县| 西乌珠穆沁旗| 壤塘县| 吉首市| 勃利县| 蒙阴县| 南京市| 江永县| 河西区| 济阳县| 咸阳市| 舒兰市| 古浪县| 花莲县| 蒙自县| 龙山县| 武安市| 琼海市| 库尔勒市| 凤凰县| 苏州市| 山东省| 合阳县| 廉江市| 陇川县| 东兰县| 湄潭县| 若尔盖县| 东港市| 徐闻县| 西藏| 桐乡市| 堆龙德庆县|