spring bean之间的关系:继承;依赖「建议收藏」

spring bean之间的关系:继承;依赖

大家好,又见面了,我是全栈君。

概要:

spring bean之间的关系:继承;依赖「建议收藏」


继承Bean配置

  • Spring同意继承bean的配置,被继承的bean称为父bean。继承这个父Bean的Bean称为子Bean
  • 子Bean从父Bean中继承配置,包含Bean的属性配置
  • 子Bean也能够覆盖从父Bean继承过来的配置
  • 父Bean能够作为配置模版,也能够作为Bean实例,若仅仅想把父Bean作为模版,能够配置<bean>的abstract属性为true。这样Spring将不会实例化这个Bean
  • 并非<bean>元素里的全部属性都会被继承。比方:autowire,abstract等。
  • 能够忽略父Bean的class属性,让子Bean指定自己的类,而共享同样的属性配置,但此时abstract必须设为true


依赖Bean配置

  • Spring同意用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好
  • 假设前置依赖于多个Bean,则能够通过逗号,空格或的方式配置Bean的名称

实例代码具体解释
代码结构:
spring bean之间的关系:继承;依赖「建议收藏」

Main.java

package com.coslay.beans.relation;

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

import com.coslay.beans.autowire.Address;
import com.coslay.beans.autowire.Person;

public class Main {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");
		
		Address address = (Address) ctx.getBean("address3");
		System.out.println(address);
		
		address = (Address) ctx.getBean("address2");
		System.out.println(address);
		
		Person person = (Person) ctx.getBean("person");
		System.out.println(person);
	}
}


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:bean的abstract属性为true的bean。这样bean不能被IOC容器实例化。仅仅能用来被继承继承 
		若某一个bean的class属性没有指定,则该bean必须是一个抽象bean-->	
	<bean id="address" 
		p:city="Beijing" p:street="WuDaoKou" abstract="true"></bean>
		
	<!-- <bean id="address2" class="com.coslay.beans.autowire.Address"
		p:city="Beijing" p:street="DaZhongSi"></bean> -->
	<!-- bean 配置的继承:使用bean 的parent 属性指定继承哪个baen的配置 -->
	<bean id="address2" class="com.coslay.beans.autowire.Address" 
		parent="address"></bean>
		
	<bean id="address3" class="com.coslay.beans.autowire.Address" 
		p:street="DaZhongSi" parent="address2"></bean>
	
	<bean id="car" class="com.coslay.beans.autowire.Car"
		p:brand="Audi" p:price="300000"></bean>
	
	<!-- 
		要求在配置Person时。必须有一个关联的car!换句话说person这个bean依赖于Car这个bean
	 -->
	<bean id="person" class="com.coslay.beans.autowire.Person"
		p:name="Tom" p:address-ref="address2" depends-on="car"></bean>
	
</beans>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115296.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSRF漏洞讲解

    SSRF漏洞讲解SSRF漏洞讲解一、初识SSRF漏洞1.定义2.产生原理3.会导致的危害4.常见产生SSRF的地方5.常见缺失函数二、SSRF漏洞利用1.函数(1)file_get_contents(2)fsockopen()(3)curl_exec()2.协议(1)file协议(2)http协议(3)dict协议(4)gopher协议三、绕过1.绕过方式(1)检查IP是否为内网IP(2)Host获取与DNS绕过(3)通过各种协议(4)利用URL解析器滥用问题四、修复修复方案五、小结一、初识SSRF漏洞1.定义

    2022年6月25日
    28
  • certutil 导入 CA 证书

    certutil 导入 CA 证书

    2022年3月1日
    70
  • 中标麒麟高级服务器操作系统V6

    中标麒麟高级服务器操作系统V6本镜像有两个月的免费试用期!免费试用期结束后,如果您希望购买正式版。请与我们联系。(400-706-1825)中标麒麟高级服务器操作系统镜像不仅为用户提供了中文化的系统环境和图形化的管理工具,同

    2022年7月2日
    26
  • SPPnet 笔记

    SPPnet 笔记ECCV2014的文章,后来又扩展成了TPAMI整体的先后次序:RCNN(CVPR2014)->SPPnet(ECCV2014)->FastRCNN(ICCV2015)->FasterRCNN(NIPS2015)现有的深度卷积网络需要固定大小的输入图片(比如224×224224\times224224×224),这个要求人工设计的痕迹过于明显,并且可能会降低一…

    2022年5月4日
    50
  • Win7与debian6搭建双系统(手动修复启动项)[通俗易懂]

    Win7与debian6搭建双系统(手动修复启动项)[通俗易懂]因为实验需要,要在一台机器上搭建win7和debian6的双系统。下面记录一下系统搭建过程。1.安装Windows764位版。一切按照默认选项进行安装,系统安装在第一个分区。2.进入windows7系统,使用分区工具在磁盘的尾部分出两个FAT32分区(这里为D和E),其中D盘为linux安装分区,E盘将作为swap分区。3.用光盘或者U盘安装debian6.0.5,在选

    2022年10月18日
    0
  • SPI 协议简介

    SPI 协议简介1.SPI协议SPI协议是由摩托罗拉公司提出的通讯协议(SerialPeripheralInterface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。1.1SPI物理层SPI通讯设备之间的常用连接方式:SPI通讯使用3条总线及片选线,3条总线分别为SCK、MOSI、MISO,片选线为SS,它们的作用介绍如下:(1)SS(SlaveSelect):从设备选…

    2022年8月31日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号