国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring使用Setter完成依賴注入方式

Spring使用Setter完成依賴注入方式

2022-01-20 12:12想飛的魚Stitch Java教程

這篇文章主要介紹了Spring使用Setter完成依賴注入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

依賴注入的理解

依賴:實體間的所有依賴由容器創建

注入:容器負責完成實體間依賴互相注入的任務

 

使用Setter完成不同類型屬性的注入

實體類Student

package indi.stitch.pojo;
import java.util.*;
public class Student {
  private String name;
  private Address address;
  private String[] books;
  private List<String> hobbys;
  private Set<String> games;
  private Map<String, String> card;
  private Properties info;
  private String wife;
  public String getName() {
      return name;
  }
  public void setName(String name) {
      this.name = name;
  }
  public Address getAddress() {
      return address;
  }
  public void setAddress(Address address) {
      this.address = address;
  }
  public String[] getBooks() {
      return books;
  }
  public void setBooks(String[] books) {
      this.books = books;
  }
  public List<String> getHobbys() {
      return hobbys;
  }
  public void setHobbys(List<String> hobbys) {
      this.hobbys = hobbys;
  }
  public Set<String> getGames() {
      return games;
  }
  public void setGames(Set<String> games) {
      this.games = games;
  }
  public Map<String, String> getCard() {
      return card;
  }
  public void setCard(Map<String, String> card) {
      this.card = card;
  }
  public String getWife() {
      return wife;
  }
  public void setWife(String wife) {
      this.wife = wife;
  }
  public Properties getInfo() {
      return info;
  }
  public void setInfo(Properties info) {
      this.info = info;
  }
  @Override
  public String toString() {
      return "Student{" +
              "name='" + name + '\'' + "\n" +
              ", address=" + address.toString() + "\n" +
              ", books=" + Arrays.toString(books) + "\n" +
              ", hobbys=" + hobbys + "\n" +
              ", games=" + games + "\n" +
              ", card=" + card + "\n" +
              ", info=" + info + "\n" +
              ", wife='" + wife + '\'' +
              '}';
  }
}

實體類引用的復雜類型Address

package indi.stitch.pojo;
public class Address {
  private String address;
  public String getAddress() {
      return address;
  }
  public void setAddress(String address) {
      this.address = address;
  }
  @Override
  public String toString() {
      return "Address{" +
              "address='" + address + '\'' +
              '}';
  }
}

String字符串類型注入

<property name="name" value = "stitch" />

復雜VO類型注入

配置文件中增加復雜類型bean(Address)的依賴配置

<bean id = "address" class="indi.stitch.pojo.Address">
      <property name="address" value="北京" />
  </bean>
<bean id = "student" class = "indi.stitch.pojo.Student">

實體類Student的bean屬性依賴對其進行引用

<property name="address" ref="address"/>

數組類型注入

<property name="books">
          <array>
              <value>西游記</value>
              <value>三國演義</value>
              <value>紅樓夢</value>
              <value>水滸傳</value>
          </array>
</property>

List集合類型注入

<property name="hobbys">
          <list>
              <value>唱歌</value>
              <value>跳舞</value>
              <value>打籃球</value>
          </list>
</property>

Set集合類型注入

<property name="games">
          <set>
              <value>英雄聯盟</value>
              <value>穿越火線</value>
              <value>刺激戰場</value>
          </set>
</property>

Map鍵值對類型注入

<property name="card">
          <map>
              <entry key="學生卡" value="123456"/>
              <entry key="身份證" value="111111222222223333" />
          </map>
</property>

Properties類型注入

<property name="info">
          <props>
              <prop key="sex">男</prop>
              <prop key="age">18</prop>
          </props>
</property>

null類型注入

<property name="wife">
          <null />
      </property>

整體配置文件

<?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 id = "address" class="indi.stitch.pojo.Address">
      <property name="address" value="北京" />
  </bean>
  <bean id = "student" class = "indi.stitch.pojo.Student">
      <!-- String字符串類型注入-->
      <property name="name" value = "stitch" />
      <!--復雜VO類型注入-->
      <property name="address" ref="address"/>
      <!--數組類型注入-->
      <property name="books">
          <array>
              <value>西游記</value>
              <value>三國演義</value>
              <value>紅樓夢</value>
              <value>水滸傳</value>
          </array>
      </property>
      <!--List集合類型注入-->
      <property name="hobbys">
          <list>
              <value>唱歌</value>
              <value>跳舞</value>
              <value>打籃球</value>
          </list>
      </property>
      <!--Set集合類型注入-->
      <property name="games">
          <set>
              <value>英雄聯盟</value>
              <value>穿越火線</value>
              <value>刺激戰場</value>
          </set>
      </property>
      <!--Map鍵值對類型注入-->
      <property name="card">
          <map>
              <entry key="學生卡" value="123456"/>
              <entry key="身份證" value="111111222222223333" />
          </map>
      </property>
      <!--Properties類型注入-->
      <property name="info">
          <props>
              <prop key="sex">男</prop>
              <prop key="age">18</prop>
          </props>
      </property>
      <!--null類型注入-->
      <property name="wife">
          <null />
      </property>
  </bean>
</beans>

測試類

import indi.stitch.pojo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
  public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
      Student student  = (Student) context.getBean("student");
      System.out.println(student.toString());
  }
}

輸出結果:

Spring使用Setter完成依賴注入方式

 

Spring解決setter方式的循環依賴的原理

1.通過構造函數創建A對象 (A對象是半成品,還沒有注入屬性和調用init方法)

2.將半成品A對象封裝成工廠對象存入三級緩存

3.A對象需要注入B對象,發現緩存里還沒有B對象,開始創建B對象

4.通過構造函數創建B對象(B對象是半成品,還沒有注入屬性和調用init方法)同樣在三級緩存中創建B工廠對象

5.B對象需要注入A對象;從三級緩存中獲取A工廠對象,使用工廠對象獲取半成品A對象同時放入

二級緩存中,提前曝光A對象,同時刪除A工廠對象

6.B對象繼續注入其它屬性和初始化,之后將完成品B對象放入完成品緩存一級緩存,同時刪除B工廠對象

7.A對象獲取單例B的引用完成屬性注入

8.B對象繼續注入其它屬性和初始化,之后將完成品A對象放入完成品緩存一級緩存同時刪除二級緩存中的A

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_39209361/article/details/114047114

延伸 · 閱讀

精彩推薦
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 免费看黄色电影 | 午夜社区 | 欧美视频免费在线 | 97精品国产97久久久久久免费 | 免费成人在线视频网站 | 色综合天天综合网国产成人综合天 | 精品中文字幕在线 | 欧美在线免费视频 | 国产成人在线一区二区 | 欧美成人影院 | www.色.com| 私人毛片免费高清视频 | 欧美区视频 | 成人精品视频在线观看 | 久久综合一区二区 | 九九热免费观看 | 日日干夜夜操 | 亚洲国产高清视频 | 日韩精品三区 | 欧美一级一区 | 免费一二区 | 少妇精品视频在线观看 | 日韩第一区 | 国产精品日韩三级 | 欧美日韩一区二区在线观看 | 国产精品一二区 | 日韩激情免费视频 | 精品三区| 久久成人综合网 | 久草中文在线观看 | 日韩欧美视频观看 | 国产精品美女久久久久久免费 | 日韩一二三 | 国产精品ssss在线亚洲 | 欧美日韩亚洲一区 | 日韩欧美国产一区二区三区 | 亚洲综合在线视频 | 色av综合 | 日韩亚洲一区二区 | 希岛爱理一区二区三区av高清 | 一区二区三区亚洲 |