Spring裡面xml檔案中bean的依賴和繼承
繼承
- bean繼承:兩個類之間大多數的屬性都相同,避免重複配置,通過bean標籤的parent屬性重用已有的Bean元素的配置資訊
- 繼承指的是配置資訊的複用,和java類的繼承沒有關係
video.java(父類)
package net.cybclass.sp.domain;
import java.util.List;
import java.util.Map;
/**
* @author: wangxiaobo
* @create: 2020-10-03 15:08
**/
public class Video {
// public Video(int id, String title) {
// System.out.println("Video 建構函式被呼叫");
// this.id = id;
// this.title = title;
// }
private int id;
private String title;
// private List<String> chapterList;
// private Map<Integer, String> videoMap;
// public List<String> getChapterList() {
// return chapterList;
// }
//
// public void setChapterList(List<String> chapterList) {
// this.chapterList = chapterList;
// }
//
// public Map<Integer, String> getVideoMap() {
// return videoMap;
// }
//
// public void setVideoMap(Map<Integer, String> videoMap) {
// this.videoMap = videoMap;
// }
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
System.out.println("Video setTitle被呼叫");
this.title = title;
}
}
Video2.java(子類)
package net.cybclass.sp.domain;
/**
* @author: wangxiaobo
* @create: 2020-10-03 19:16
**/
public class Video2 {
private int id;
private String title;
private String summary;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
@Override
public String toString() {
return "Video2{" +
"id=" + id +
", title='" + title + '\'' +
", summary='" + summary + '\'' +
'}';
}
}
applicationContext.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="video" class="net.cybclass.sp.domain.Video" scope="prototype">
<property name="id" value="9"></property>
<property name="title" value="Spring5.X課程"></property>
</bean>
<bean id="video2" class="net.cybclass.sp.domain.Video2" parent="video">
<property name="summary" value="這個是summary"></property>
</bean>
</beans>
app.java
package net.cybclass.sp;
import net.cybclass.sp.domain.Video;
import net.cybclass.sp.domain.Video2;
import net.cybclass.sp.domain.VideoOrder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author: wangxiaobo
* @create: 2020-10-03 15:11
**/
public class app {
public static void main(String[] args) {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
// Video video=(Video) applicationContext.getBean("video");
// VideoOrder videoOrder= (VideoOrder) applicationContext.getBean("videoOrder");
// System.out.println(video.getTitle());
// System.out.println(videoOrder.getVideo());
// System.out.println(video.getChapterList());
// System.out.println(video.getVideoMap());
Video2 video=(Video2) applicationContext.getBean("video2");
System.out.println(video);
}
}
執行:
依賴關係
depends-on
<?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="video" class="net.cybclass.sp.domain.Video">
<property name="id" value="8"></property>
<property name="title" value="SpringBoot課程專題"></property>
</bean>
<bean id="video2" class="net.cybclass.sp.domain.Video2" parent="video">
<property name="summary" value="這個是summary"></property>
</bean>
<!--設定兩個bean的關係,video要先於videoOrder例項化-->
<bean id="videoOrder" class="net.cybclass.sp.domain.VideoOrder" depends-on="video">
<property name="id" value="8"></property>
<property name="outTradeNo" value="12312"></property>
<property name="video" ref="video"></property>
</bean>
</beans>
相關文章
- Spring:Bean的scope作用域案例講解以及Bean之間的依賴和繼承(3)SpringBean繼承
- Spring 中 bean 的迴圈依賴SpringBean
- Spring Bean 定義繼承SpringBean繼承
- 【spring原始碼系列】之【Bean的迴圈依賴】Spring原始碼Bean
- Springboot專案中需整合的依賴集和檔案配置Spring Boot
- Spring原始碼分析(二)bean的例項化和IOC依賴注入Spring原始碼Bean依賴注入
- 深談Spring如何解決Bean的迴圈依賴SpringBean
- Spring中的迴圈依賴Spring
- 使用Mockito修改Bean的依賴MockitoBean
- 24--Spring解決bean之間的迴圈依賴SpringBean
- spring迴圈依賴解決過程&Bean的生命週期SpringBean
- spring 的依賴注入Spring依賴注入
- Spring 原始碼分析之 bean 依賴注入原理(注入屬性)Spring原始碼Bean依賴注入
- 面試中聊到的javascript中的繼承面試JavaScript繼承
- 【Spring】Spring中的迴圈依賴及解決Spring
- spring中bean.xml的http://www.springframework.org/schema/bean報錯SpringBeanXMLHTTPFramework
- 面試題:Spring 的迴圈依賴問題面試題Spring
- Spring6 當中的 Bean 迴圈依賴的詳細處理方案+原始碼解析SpringBean原始碼
- 面試必殺技,講一講Spring中的迴圈依賴面試Spring
- Spring 控制反轉和依賴注入Spring依賴注入
- 面試官:你是如何理解Java中依賴倒置和依賴注入以及控制反轉的?面試Java依賴注入
- requirements.txt 檔案宣告依賴UIREM
- 死磕Spring之IoC篇 - 單例 Bean 的迴圈依賴處理Spring單例Bean
- openGauss libpq使用依賴的標頭檔案
- Spring框架是怎麼解決Bean之間的迴圈依賴的 (轉)Spring框架Bean
- Springboot引入thymeleaf依賴,在pom檔案中報錯。Spring Boot
- 再探迴圈依賴 → Spring 是如何判定原型迴圈依賴和構造方法迴圈依賴的?Spring原型構造方法
- mapper檔案 和beanAPPBean
- Python中的繼承和多型Python繼承多型
- JavaScript中的繼承和組合JavaScript繼承
- Spring的依賴注入的方式Spring依賴注入
- Spring系列第十三講 使用繼承簡化bean配置(abstract & parent)Spring繼承Bean
- pyinstaller 打包 exe 程式步驟和新增依賴檔案方法
- maven中排除依賴傳遞可以在pom.xml檔案中使用exclusions標籤MavenXML
- ES6中的類繼承和ES5中的繼承模式詳解繼承模式
- Spring Boot 起步依賴Spring Boot
- Spring 依賴注入 DISpring依賴注入
- Spring IOC——依賴注入Spring依賴注入