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

通過實例解析spring bean之間的關系

 更新時間:2020年01月07日 10:03:34   作者:西西嘛呦  
這篇文章主要介紹了通過實例解析spring bean之間的關系,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了通過實例解析spring bean之間的關系,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

兩種關系:繼承、依賴

一、繼承關系

Address.java

package com.gong.spring.beans.autowire;

public class Address {
  private String city;
  private String street;
  
  public String getCity() {
    return city;
  }

  public void setCity(String city) {
    this.city = city;
  }

  public String getStreet() {
    return street;
  }

  public void setStreet(String street) {
    this.street = street;
  }

  @Override
  public String toString() {
    return "Address [city=" + city + ", street=" + street + "]";
  }
}

beans-relation.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"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="address" class="com.gong.spring.beans.autowire.Address" 
  p:city="武漢" p:street="絡南街道"></bean>
  <!-- 使用parent指定指定哪個bean的配置,子bean可以覆蓋父bean的配置 -->
  <bean id="address2" class="com.gong.spring.beans.autowire.Address" parent="address" 
  p:street="珞獅街道"></bean>
</beans>

Main.java

package com.gong.spring.beans.autowire;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
  public static void main(String[] args) {
    //1.創(chuàng)建spring的IOC容器對象
    ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");
    //2.從容器中獲取Bean實例
    Address address = (Address) ctx.getBean("address"); 
    System.out.println(address.toString());
    Address address2 = (Address) ctx.getBean("address2"); 
    System.out.println(address2.toString());
  }
}

輸出:

address2繼承了address的city配置,因此city=武漢。

當然,我們也可以使用abstract來表明一個Bean是一個抽象bean。抽象bean可以作為一個模板,且不能被實例化。同時,如果一個bean沒有聲明class,那么該bean也是一個抽象bean,且必須指定abstract="true"。

<bean id="address" class="com.gong.spring.beans.autowire.Address" abstract="true"
  p:city="武漢" p:street="絡南街道"></bean>

此時,在進行實例化就會報錯

Address address = (Address) ctx.getBean("address"); 

將抽象bean作為父bean,可以實例化它的子bean:

  Address address2 = (Address) ctx.getBean("address2"); 
  System.out.println(address2.toString());

二、依賴關系

Car.java

package com.gong.spring.beans.autowire;

public class Car {
  
  public Car() {
  }

  public Car(String name) {
    this.name = name;
  }
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return "Car [name=" + name + "]";
  }
  
}

Student.java

package com.gong.spring.beans.autowire;
import java.util.List;
import java.util.Map;

public class Student {
  
  private String name;
  private int age;
  private double score;
  private Car car;
  private Address address;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public double getScore() {
    return score;
  }
  public void setScore(double score) {
    this.score = score;
  }
  public Car getCar() {
    return car;
  }
  public void setCar(Car car) {
    this.car = car;
  }
  public Address getAddress() {
    return address;
  }
  public void setAddress(Address address) {
    this.address = address;
  }
  @Override
  public String toString() {
    return "Student [name=" + name + ", age=" + age + ", score=" + score + ", car=" + car + ", address=" + address
        + "]";
  }
  
  
}

beans-relation.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"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  
  <bean id="car" class="com.gong.spring.beans.autowire.Car" p:name="baoma"></bean>
  <bean id="address" class="com.gong.spring.beans.autowire.Address" 
  p:city="武漢" p:street="絡南街道"></bean>
  <!-- 要求配置Student時,要依賴于Car-->
  <bean id="student" class="com.gong.spring.beans.autowire.Student" p:name="tom"
  p:age="12" p:score="99.00" autowire="byName" depends-on="car"></bean>
</beans>

spring允許用戶通過depends-on屬性設定bean前置依賴bean,前置依賴bean會在本Bean實例化之前就創(chuàng)建好。如果前置依賴于多個Bean,則可以通過逗號,空格的方式來配置bean的名稱。

Main.java

package com.gong.spring.beans.autowire;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
  public static void main(String[] args) {
    //1.創(chuàng)建spring的IOC容器對象
    ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");
    //2.從容器中獲取Bean實例
    Student student = (Student) ctx.getBean("student"); 
    System.out.println(student.toString());
  }
}

輸出:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺談Java之Map 按值排序 (Map sort by value)

    淺談Java之Map 按值排序 (Map sort by value)

    下面小編就為大家?guī)硪黄獪\談Java之Map 按值排序 (Map sort by value)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • java原碼補碼反碼關系解析

    java原碼補碼反碼關系解析

    這篇文章主要為大家詳細介紹了java原碼補碼反碼的關系,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Java系統(tǒng)運行緩慢等問題的排查思路

    Java系統(tǒng)運行緩慢等問題的排查思路

    這篇文章主要介紹了Java系統(tǒng)運行緩慢等問題的排查思路,讀者可以根據具體情況具體分析,從而解決問題
    2021-04-04
  • 使用Spring Initializr方式如何快速構建Spring Boot項目

    使用Spring Initializr方式如何快速構建Spring Boot項目

    Spring lnitializr是一個Web應用,它提供了一個基本的項目結構,能夠幫助我們快速構建一個基礎的Spring Boot項目,本文分步驟講解如何使用Spring Initializr方式構建Spring Boot項目,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • 淺談Spring-boot事件監(jiān)聽

    淺談Spring-boot事件監(jiān)聽

    這篇文章主要介紹了淺談Spring-boot事件監(jiān)聽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java的內部類總結

    Java的內部類總結

    這篇文章主要為大家介紹了Java的內部類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java?導出?CSV?文件操作詳情

    Java?導出?CSV?文件操作詳情

    這篇文章主要介紹了Java導出CSV文件操作詳情,文章通過導入坐標展開詳細內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • lombok?找不到get/set方法的原因及分析

    lombok?找不到get/set方法的原因及分析

    這篇文章主要介紹了lombok?找不到get/set方法的原因及分析,具有很好的參考價值,希望對大家有所幫助。
    2022-06-06
  • Spring Boot加密配置文件特殊內容的示例代碼詳解

    Spring Boot加密配置文件特殊內容的示例代碼詳解

    這篇文章主要介紹了Spring Boot加密配置文件特殊內容的相關知識,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 詳解如何將JAR包發(fā)布到Maven中央倉庫

    詳解如何將JAR包發(fā)布到Maven中央倉庫

    這篇文章主要介紹了詳解如何將JAR包發(fā)布到Maven中央倉庫,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論

华容县| 化隆| 庆阳市| 禄丰县| 泊头市| 洞头县| 平度市| 阆中市| 上林县| 开远市| 淳化县| 潮州市| 西峡县| 南昌市| 神农架林区| 应城市| 勐海县| 东阿县| 海林市| 海原县| 涟源市| 阿鲁科尔沁旗| 汶川县| 将乐县| 霍州市| 托克托县| 巩留县| 武宣县| 芮城县| 昌都县| 张家港市| 柞水县| 松潘县| 乌兰浩特市| 正阳县| 垣曲县| 琼海市| 台南市| 舒城县| 柘城县| 台江县|