天天看點

spring-ioc中集錦,持續更新中。。。。。

Spring-IOC使用:

IOC:控制反轉

DI:依賴注入

兩者關系:IOC使用依賴注入(DI)的方式,将對象的建立交給spring容器(包含并管理應用對象的配置和生命周期)中,然後調用時,直接從spring容器中獲得。

Spring容器在初始化時先讀取配置檔案,根據配置檔案或中繼資料建立與組織對象存入容器中,程式使用時再從IOC容器中取出需要的對象。從容器中取回的對象預設是單例的,隻能建立一個對象。

使用scope屬性可以指定作用域:

Singleton:每個spring容器作用域中一個bean隻對應一個對象執行個體。

Prototype:一個bean定義多個對象執行個體。

Request:一個bean定義作用于http request生命周期是指每個http request擁有自己的通過一個bean定義建立的執行個體,僅在基于web的spring applicationcontext中有效。

Session:一個bean定義作用于http session生命周期,僅在基于web的spring applicationcontext中有效。

Global:一個bean定義作用于全局的http session生命周期,僅在portlet context中使用才有效,僅在基于web的session spring applicationcontext中有效。

Application:一個bean定義作用于整個servletcontext生命周期,僅在基于web的spring applicationcontext中有效。

Pom.xml檔案配置:

<dependencies>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-webmvc</artifactId>

        <version>5.1.8.RELEASE</version>

    </dependency>

</dependencies>

通過上述代碼可自動導入的包:

  • org.springframework:spring-aop:5.1.8.RELEASE :面向切面的程式設計,可以設定方法攔截器與切入點,進而将邏輯代碼與實作函數分離。
  • org.springframework:spring-beans:5.1.8.RELEASE:包含通路配置檔案、建立和管理bean以及進行ioc/di操作的相關beanFactory.
  • org.springframework:spring-context:5.1.8.RELEASE:ApplicationCotext,繼承了beans特性,擴充添加國際化時間傳播、資源加載和對context的建立和支援。
  • org.springframework:spring-core:5.1.8.RELEASE:核心工具類
  • org.springframework:spring-expression:5.1.8.RELEASE:提供表達式
  • org.springframework:spring-web:5.1.8.RELEASE

Spring.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">

Spring-ioc的功能:依賴注入和控制反轉(實作方式DI)

控制反轉:控制獲得對象的方式的反轉,對象的建立轉交給第三方進行,即spring容器。

Spring容器在初始化時先讀取配置檔案,根據配置檔案或中繼資料建立與組織對象存入容器中,程式使用時再從IOC容器中取出需要的對象。

依賴注入的方式:

方式一、基于setter方法注入

通過無參構造器或無參static工廠方法執行個體化bean後,調用該bean的setter方法,即可實作依賴注入。

bean配置檔案:

<bean class="person" name="person">

    <property name="id" value="1234"/>

</bean>

備注:其中的id是根據setter方法的名字來獲得的。

方式二、基于構造方法注入

基于構造器DI,通過調用帶參數的構造方法實作,每個參數代表一個依賴。

<bean class="person" name="person">

    <constructor-arg name="name" value="liying"/>

方式三、複雜資料類型的依賴注入

設定空值:<null></null>

List注入:

如果屬性是基本資料類型,<value标簽>

<list>

    <value>123</value>

    <value>456</value>

</list>

如果屬性是bean,使用标簽<bean>

Map注入:

如果屬性是基本資料類型,使用<entry key=”” value=””>

<map>

    <entry key="123" value="wer"/>

    <entry key="456" value="tyu"/>

</map>

如果屬性是<bean>,使用<bean> value-ref