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

spring?IOC控制反轉原理詳解

 更新時間:2022年03月07日 15:42:40   作者:ZJH'blog  
這篇文章主要為大家詳細介紹了spring?IOC控制反轉原理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

IOC概念

  • 定義:控制反轉,把對象的創(chuàng)建和調(diào)用(傳統(tǒng)方式是通過new之后直接使用對象),交給Spring進行管理(依靠對象工廠通過注入的方式獲取對象)
  • 降低耦合度
  • 底層原理:xml解析、工廠模式、反射

參考

補:工廠模式和單例模式區(qū)別

單例模式(懶漢式,餓漢式)都只能創(chuàng)建一個指定類的唯一對象

工廠模式(一個接口,多態(tài)性的體現(xiàn))可以創(chuàng)建該接口的工廠下的所有類的唯一對象

IOC接口——實現(xiàn)IOC容器

IOC容器可以有多個,new幾個就有幾個IOC容器,一個容器綁定一個xml文件,一個xml中可以配置多個bean,容器可以關閉

1.BeanFactory

  • Spring的內(nèi)部接口,不建議開發(fā)者使用
  • 懶漢式,加載配置文件的時候不創(chuàng)建對象

2.ApplicationContext

  • BeanFactory的子接口
  • 功能更強大,建議開發(fā)者使用
  • 餓漢式,加載配置文件即創(chuàng)建對象
  • 由于創(chuàng)建對象會耗費時間和資源,因此餓漢式可以把時間開銷放在項目啟動時

第三個是基于注解的獲取容器方式,利用反射而非解析xml配置

SpringBoot中獲取ApplicationContext的三種方式

1.@Autowired: 在任意被spring托管的類中注入

2.ApplicationContextAware接口:實現(xiàn)這個接口可以在普通類中獲取Spring的IOC容器

IOC操作管理Bean

xml配置bean

在bean.xml中配置了bean的屬性后,先解析xml得到IOC接口對象(IOC容器),然后通過容器來getBean,獲得對象

同時,ApplicationContext也可以換成其父接口BeanFactory,結果不受影響

DI:依賴注入(注入屬性)

兩種方法

set方法+property

有參構造+constructor

 工廠Bean和普通Bean

注解配置bean

注冊Bean

以下5個注解都可以創(chuàng)建Bean對象交給Spring的IOC容器進行管理

  • @Component:以下4個的元注解
  • @Service
  • @Controller
  • @Repository
  • @Configuration

因為元注解Component可以指定value=“別名”,所以以上5種注冊Bean的方式都可以起別名,一個接口多個實現(xiàn)類Bean的情況需要起別名,否則Spring無法判斷獲取哪個Bean

使用Bean

  • @Autowired:根據(jù)自動裝配
  • @Qualifier:根據(jù)別名裝配,要和@Autowired搭配使用
  • @Resource:即可根據(jù)類也可根據(jù)別名
  • @Value:注入普通類型屬性

兩個String實現(xiàn)Bean,起別名

Bean的配置

作用域:如何設置bean的單例or多例

scope屬性值:(常用singleton和prototype)

  • singleton:默認值,單例對象,餓漢式
  • prototype:多實例對象,懶漢式
  • request請求、session會話:不常用

在bean.xml中或者@Bean(scope="")中配置

生命周期:創(chuàng)建到銷毀

1.無參構造

2.調(diào)用set方法解析配置

3.調(diào)用bean的初始化方法

如果有配置了初始化方法,需要配置init-method=“初始化方法的名稱”

例如:在@Bean(initmethod=“xxx方法”)

4.獲取bean并使用

注解方法可以直接@Autowired注入bean,配置xml的方式通過

new ClassPathXmlApplicationContext(xxxx.xml)解析并獲取IOC容器之后getBean

5.bean的銷毀與銷毀時方法

springboot中的bean創(chuàng)建與銷毀

銷毀方法的配置@Bean(destroyMethod = “xxxxx”)

如果是配置在xml中,則

<bean id="  " class="   " destroy-method="   "></bean>

xml配置的Bean的關閉:關閉IOC容器即可

Bean掃描

spring中xml配置

spring和springboot中的注解配置

@ComponentScan

  • 被Component及其子注解標注的Bean需要用ComponentScan掃描到才能使用
  • SpringBootApplication啟動類包括了@ComponentScan
  • @ComponentScan默認掃描該類包下的所有Bean
  • @ComponentScan可以自定義basePackages、includeFilters、excludeFilters

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!    

相關文章

  • 詳解JavaScript中的函數(shù)聲明和函數(shù)表達式

    詳解JavaScript中的函數(shù)聲明和函數(shù)表達式

    這篇文章主要介紹了詳解JavaScript中的函數(shù)聲明和函數(shù)表達式,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • java實現(xiàn)兩個文件的拼接

    java實現(xiàn)兩個文件的拼接

    這篇文章主要為大家詳細介紹了java實現(xiàn)兩個文件的拼接,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 使用java反射將結果集封裝成為對象和對象集合操作

    使用java反射將結果集封裝成為對象和對象集合操作

    這篇文章主要介紹了使用java反射將結果集封裝成為對象和對象集合操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 華為鴻蒙系統(tǒng)應用開發(fā)工具 DevEco Studio的安裝和使用圖文教程

    華為鴻蒙系統(tǒng)應用開發(fā)工具 DevEco Studio的安裝和使用圖文教程

    HUAWEI DevEco Studio 是華為消費者業(yè)務為開發(fā)者提供的集成開發(fā)環(huán)境(IDE),旨在幫助開發(fā)者快捷、方便、高效地使用華為EMUI開放能力。這篇文章主要介紹了華為鴻蒙系統(tǒng)應用開發(fā)工具 DevEco Studio的安裝和使用圖文教程,需要的朋友可以參考下
    2021-04-04
  • Java 內(nèi)存模型(JVM)

    Java 內(nèi)存模型(JVM)

    本文公國講解Java 內(nèi)存模型來看看解決可見性、有序性問題的 Java 內(nèi)存模型(JMM),今天通過本文給大家介紹Java 內(nèi)存模型(JVM)的相關知識,感興趣的朋友一起看看吧
    2021-08-08
  • Java構建樹形菜單的實例代碼(支持多級菜單)

    Java構建樹形菜單的實例代碼(支持多級菜單)

    這篇文章主要介紹了Java構建樹形菜單的實例代碼(支持多級菜單),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-09-09
  • 詳解Java內(nèi)部類與對象的打印概念和流程

    詳解Java內(nèi)部類與對象的打印概念和流程

    在 Java 中,可以將一個類定義在另一個類里面或者一個方法里面,這樣的類稱為內(nèi)部類。廣泛意義上的內(nèi)部類一般來說包括這四種:成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類
    2021-10-10
  • Java內(nèi)存溢出的幾個區(qū)域總結(注意避坑!)

    Java內(nèi)存溢出的幾個區(qū)域總結(注意避坑!)

    內(nèi)存溢出是指應用系統(tǒng)中存在無法回收的內(nèi)存或使用的內(nèi)存過多,最終使得程序運行要用到的內(nèi)存大于虛擬機能提供的最大內(nèi)存,下面這篇文章主要給大家介紹了關于Java內(nèi)存溢出的幾個區(qū)域,總結出來給大家提醒注意避坑,需要的朋友可以參考下
    2022-11-11
  • dubbo服務引用之創(chuàng)建Invoker流程詳解

    dubbo服務引用之創(chuàng)建Invoker流程詳解

    這篇文章主要為大家介紹了dubbo服務引用二之創(chuàng)建Invoker流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java 發(fā)送http請求上傳文件功能實例

    Java 發(fā)送http請求上傳文件功能實例

    本文通過實例代碼給大家介紹了Java 發(fā)送http請求上傳文件功能,需要的朋友參考下吧
    2017-06-06

最新評論