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

Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

這篇具有很好參考價(jià)值的文章主要介紹了Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

學(xué)習(xí)視頻:【孫哥說Spring5:從設(shè)計(jì)模式到基本應(yīng)用到應(yīng)用級(jí)底層分析,一次深入淺出的Spring全探索。學(xué)不會(huì)Spring?只因你未遇見孫哥】

第七章、反轉(zhuǎn)控制與依賴注入

1.反轉(zhuǎn)(轉(zhuǎn)移)控制(IOC inverse of Control)

  1. 控制:對(duì)于成員變量賦值的控制權(quán)

  2. 反轉(zhuǎn)控制:把對(duì)于成員變量賦值的控制權(quán),從代碼中反轉(zhuǎn)(轉(zhuǎn)移)到Spring工廠和配置文件中。

    好處:解耦合

  3. 底層實(shí)現(xiàn):工廠設(shè)計(jì)模式

如果對(duì)工廠設(shè)計(jì)模式不熟悉,可以看看前面的從簡(jiǎn)單工廠到通用工廠的筆記:Spring5的基本介紹、工廠設(shè)計(jì)模式

Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

2.依賴注入(Dependency Injection Di)

  1. 注入:通過Spring的工廠及配置文件,為對(duì)象(bean、組件)的成員變量賦值

  2. 依賴注入:當(dāng)一個(gè)類需要另一個(gè)類時(shí),就意味著依賴,一旦出現(xiàn)依賴,就可以把另一個(gè)類作為本類的成員變量,最終通過Spring配置文件進(jìn)行注入(賦值)

    好處:解耦和

Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

第八章、Spring工廠創(chuàng)建復(fù)雜對(duì)象

Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

1.什么是復(fù)雜對(duì)象

  1. 復(fù)雜對(duì)象:指的就是不能直接通過new構(gòu)造方法創(chuàng)建的對(duì)象(Connection,SqlSessionFactory)

2.Spring工廠創(chuàng)建復(fù)雜對(duì)象的3種方式

2.1 FactoryBean接口

FactoryBean是Spring原生提供給我們創(chuàng)建復(fù)雜對(duì)象的方式,同時(shí)也是spring中一個(gè)非常重要的機(jī)制

  • 開發(fā)步驟

    • 實(shí)現(xiàn)FactoryBean接口

    Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

    • Spring配置文件的配置

      如果Class中指定的類型 是FactoryBean接口的實(shí)現(xiàn)類,那么通過id獲取的是這個(gè)類所創(chuàng)建的復(fù)雜對(duì)象。

      class雖然指向ConnectionFactoryBean,但是ctx.getBean("conn")獲取的是Connection復(fù)雜對(duì)象。

      <bean id=”conn” class=”com.baizhi.factorybean.ConnectionFactoryBean”/>

  • 細(xì)節(jié)

    • 如果只想獲得FactoryBean類型的對(duì)象

      ConnectionFactoryBean conn = (ConnectionFactoryBean) ctx.getBean("&conn"); getBean的參數(shù)加上“&”

    • isSingleton方法

      返回true只會(huì)創(chuàng)建一個(gè)復(fù)雜對(duì)象

      返回false每一次都會(huì)創(chuàng)建新的對(duì)象

      問題:怎么選擇? 根據(jù)這個(gè)對(duì)象的特點(diǎn),決定是返回true還是false

    • mysql高版本連接創(chuàng)建時(shí),需要指定ssl證書,在連接數(shù)據(jù)庫的url參數(shù)加上 useSSL=false即可解決。

    • 依賴注入的體會(huì)

      1. 把Connection Factory Bean中依賴的4個(gè)字符串信息,進(jìn)行配置文件的注入

        好處:解耦合

        <bean id="conn" class="com.baizhi.factorybean.ConnectionFactoryBean">
            <property name="driveClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/myschool?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
        </bean>
        
  • FactoryBean的實(shí)現(xiàn)原理(簡(jiǎn)易版)

    1. 接口回調(diào)
    2. 為什么Spring規(guī)定FactoryBean接口 實(shí)現(xiàn) 并且 getObject()?
    3. ctx.getBean(”conn”)獲得是復(fù)雜對(duì)象 Connection,而沒有獲得ConnectionFactoryBean(&)

Spring內(nèi)部運(yùn)行流程

  1. 通過conn獲取ConnectionFactoryBean類的對(duì)象,進(jìn)而通過instanceof判斷是FactoryBean接口的實(shí)現(xiàn)類
  2. Spring按照規(guī)定執(zhí)行 getObject() ——>Connection
  3. 返回Connection

Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

  • FactoryBean總結(jié)

    Spring中用于創(chuàng)建復(fù)雜對(duì)象的一種方式,也是Spring原生提供的,后續(xù)講解Spring整合其他框架,會(huì)大量應(yīng)用FactoryBean。

2.2 實(shí)例工廠

  1. 避免Spring框架的侵入

    implements FactoryBean(是spring提供的,離開了FactoryBean,沒有能代替)

  2. 整合遺留系統(tǒng)(去到公司后,往往是整合遺留下來的代碼)

  • 開發(fā)步驟
<!-- 2.獲取復(fù)雜對(duì)象 通過實(shí)例工廠-->
<bean id="connFactory" class="com.baizhi.factorybean.ConnectionFactory"/>
<bean id="conn" factory-bean="connFactory" factory-method="getConnection"/>

2.3 靜態(tài)工廠

  • 開發(fā)步驟
<!--3. 獲取復(fù)雜對(duì)象 通過靜態(tài)工廠-->
<bean id="conn" class="xxx.StaticConnectionFactory" factory-method="getConnection"/>

3.Spring工廠創(chuàng)建對(duì)象的總結(jié)

Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象

第九章、控制Spring工廠創(chuàng)建對(duì)象的次數(shù)

1.如何控制簡(jiǎn)單對(duì)象的創(chuàng)建次數(shù)

<bean id="account" scope="singleton | prototype" class="com.baizhi.scope.Account"></bean>
singleton:只會(huì)創(chuàng)建一次簡(jiǎn)單對(duì)象 默認(rèn)值
prototype:每一次都會(huì)創(chuàng)建新的對(duì)象

2.如何控制復(fù)雜對(duì)象的創(chuàng)建次數(shù)

FactoryBean{
	isSingleton(){
		return true 只會(huì)創(chuàng)建一次
		return false 每一次創(chuàng)建新的
	}
}
如沒有isSingleton方法 還是通過scope控制次數(shù)

3.為什么要控制對(duì)象的創(chuàng)建次數(shù)?

  • 好處:節(jié)省不必要的內(nèi)存浪費(fèi)(對(duì)象創(chuàng)建多次,內(nèi)存會(huì)浪費(fèi)掉)
  • 什么樣的對(duì)象只創(chuàng)建一次
    1. SqlSessionFactory
    2. DAO
    3. Service
  • 什么樣的對(duì)象每次都要?jiǎng)?chuàng)建新的
    1. Connection
    2. SqlSession | Session

下一章:Spring5學(xué)習(xí)隨筆-生命周期、自定義類型轉(zhuǎn)換器、后置處理Bean文章來源地址http://www.zghlxwxcb.cn/news/detail-746375.html

到了這里,關(guān)于Spring5學(xué)習(xí)隨筆-IOC(反轉(zhuǎn)控制)、DI(依賴注入)和創(chuàng)建復(fù)雜對(duì)象的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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)文章

  • Java Spring IoC&DI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強(qiáng)靈活性和可維護(hù)性

    Java Spring IoC&DI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強(qiáng)靈活性和可維護(hù)性

    ?? 博客主頁:從零開始的-CodeNinja之路 ? 收錄文章:Java Spring IoCDI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強(qiáng)靈活性和可維護(hù)性 ??歡迎大家點(diǎn)贊??評(píng)論??收藏?文章 我們一下要學(xué)習(xí)的內(nèi)容都是為了實(shí)現(xiàn)?內(nèi)聚低耦合來進(jìn)行的 軟件設(shè)計(jì)原則:?內(nèi)聚低耦合. ?內(nèi)聚指

    2024年04月15日
    瀏覽(23)
  • Spring框架IOC容器和DI依賴注入

    IOC(Invertion Of Control):控制反轉(zhuǎn),使用對(duì)象時(shí),由使用new創(chuàng)建對(duì)象轉(zhuǎn)變?yōu)橛赏獠刻峁?duì)象,此過程中對(duì)象的創(chuàng)建控制權(quán)由程序轉(zhuǎn)移到外部的思想稱之為控制反轉(zhuǎn). DI(Dependency Injection):依賴注入,在容器中建立bean與bean之間的關(guān)系的過程,稱之為依賴注入 pom.xml依賴引入 BookDao BookDaoImpl Book

    2023年04月09日
    瀏覽(25)
  • 從依賴倒置原則到IOC控制反轉(zhuǎn)實(shí)現(xiàn)

    從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(zhuǎn)(Inversion of Control, IoC)再到依賴注入(Dependency Injection, DI)的演進(jìn)過程,我們可以理解為一種逐步抽象和解耦的設(shè)計(jì)思想。這種思想在C#等面向?qū)ο蟮木幊陶Z言中得到了廣泛的應(yīng)用。 首先,讓我們回顧一下依賴倒置原

    2024年04月24日
    瀏覽(26)
  • CommunityToolkit.Mvvm8.1 IOC依賴注入控制反轉(zhuǎn)(5)

    ? 本系列文章導(dǎo)航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知識(shí)對(duì)您有所提示,同時(shí)歡迎交流和指正 作者:aierong 出處:https://www.cnblogs.com/aierong ? ? CommunityToolkit.Mvvm包不提供ioc功能,但是官方建議使用:Microsoft.Extensions.DependencyInject

    2023年04月14日
    瀏覽(26)
  • Spring5學(xué)習(xí)隨筆-基礎(chǔ)注解編程

    Spring5學(xué)習(xí)隨筆-基礎(chǔ)注解編程

    學(xué)習(xí)視頻:【孫哥說Spring5:從設(shè)計(jì)模式到基本應(yīng)用到應(yīng)用級(jí)底層分析,一次深入淺出的Spring全探索。學(xué)不會(huì)Spring?只因你未遇見孫哥】 指的是在類或方法上加入特定的注解(@XXX),完成特定功能的開發(fā). 注解開發(fā)方便 代碼簡(jiǎn)介 開發(fā)速度大大提高 Spring開發(fā)潮流 Spring2.x引入注解

    2024年02月05日
    瀏覽(30)
  • Spring學(xué)習(xí)筆記(二)Spring的控制反轉(zhuǎn)(設(shè)計(jì)原則)與依賴注入(設(shè)計(jì)模式)

    是一種設(shè)計(jì)原則,降低程序代碼之間的耦合度 對(duì)象由Ioc容器統(tǒng)一管理,當(dāng)程序需要使用對(duì)象時(shí)直接從IoC容器中獲取。這樣對(duì)象的控制權(quán)就從應(yīng)用程序轉(zhuǎn)移到了IoC容器 依賴注入是一種消除類之間依賴關(guān)系的設(shè)計(jì)模式。例如,A類要依賴B類,A類不再直接創(chuàng)建B類,而是把這種依賴

    2024年02月19日
    瀏覽(22)
  • Spring5學(xué)習(xí)隨筆-Spring5的第一個(gè)程序(環(huán)境搭建、日志框架整合)

    Spring5學(xué)習(xí)隨筆-Spring5的第一個(gè)程序(環(huán)境搭建、日志框架整合)

    學(xué)習(xí)視頻:【孫哥說Spring5:從設(shè)計(jì)模式到基本應(yīng)用到應(yīng)用級(jí)底層分析,一次深入淺出的Spring全探索。學(xué)不會(huì)Spring?只因你未遇見孫哥】 1.JDK1.8+ 2.Maven3.5+ 3.IDEA2018+ 4.SpringFramework 5.1.4 官網(wǎng):www.spring.io Spring的jar包 1.設(shè)置pom的依賴 Spring的配置文件 1.配置文件的放置位置:任意位置

    2024年02月05日
    瀏覽(57)
  • Spring IoC (控制反轉(zhuǎn))

    IoC 是 Inversion of Control 的簡(jiǎn)寫,譯為“控制反轉(zhuǎn)”,它不是一門技術(shù),而是一種設(shè)計(jì)思想,是一個(gè)重要的面向?qū)ο缶幊谭▌t。 Spring 通過 IoC 容器來管理所有 Java 對(duì)象的實(shí)例化和初始化,控制對(duì)象與對(duì)象之間的依賴關(guān)系。我們將由 IoC 容器管理的 Java 對(duì)象稱為 Spring Bean,它與使

    2024年02月13日
    瀏覽(23)
  • Spring5學(xué)習(xí)隨筆-事務(wù)屬性詳解(@Transactional)

    學(xué)習(xí)視頻:【孫哥說Spring5:從設(shè)計(jì)模式到基本應(yīng)用到應(yīng)用級(jí)底層分析,一次深入淺出的Spring全探索。學(xué)不會(huì)Spring?只因你未遇見孫哥】 事務(wù)是 保證業(yè)務(wù)操作完整性的一種數(shù)據(jù)庫機(jī)制 事務(wù)的4特點(diǎn):ACID A 原子性 C 一致性 I 隔離性 D 持久性 JDBC: Connection.setAutoCommit(false) Connect

    2024年02月05日
    瀏覽(24)
  • 【學(xué)習(xí)】Spring IoC&DI

    【學(xué)習(xí)】Spring IoC&DI

    ???個(gè)人主頁:Dikz12 ??格言:吾愚多不敏,而愿加學(xué) 歡迎大家??點(diǎn)贊?評(píng)論?收藏 目錄 Spring 是什么? 什么是 IoC容器? 傳統(tǒng)開發(fā)模式? loC開發(fā)模式 IoC的優(yōu)勢(shì)? IoC 的使用 Bean的存儲(chǔ)? ?方法注解 ?DI ?屬性注入 ?構(gòu)造?法注? ?Setter 注? @Autowired存在的問題 ?解決方案:

    2024年04月15日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包