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>

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • JB全家桶 激活码_在线激活

    (JB全家桶 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • pycharm 2021永久激活码破解方法

    pycharm 2021永久激活码破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Lena.jpg 与图像处理的渊源

    Lena.jpg 与图像处理的渊源作为图像处理研究人员,相信大家一定认识下面这幅图片(下载自:https://en.wikipedia.org/wiki/Lenna):这就是Lenna本人了,全图是很sexy的,大家去看吧(http://www.lenna.org/full/l_hires.jpg)。熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna…

  • 非常详细的Fiddler工具使用说明(包含APP抓包)

    非常详细的Fiddler工具使用说明(包含APP抓包)阅读目录1.Fiddler抓包简介    1).字段说明    2).Statistics请求的性能数据分析    3).Inspectors查看数据内容    4).AutoResponder允许拦截制定规则的请求    5).Filters请求过滤规则    6).Timeline请求响应时间2.Fiddler设置解密HTTPS的网络数据3.Fiddler抓取…

  • HttpClient使用详解

    HttpClient使用详解Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。一、简介HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的

  • 什么是Load Average?

    什么是Load Average?运维工程师在日常运维中经常使用w、top、uptime等命令来查看系统当前运行的负载情况。那么作为运维工程师是如何通过以上命令来判断系统当前负载是否已经达到极限了呢?为此笔者总结了一下如何通过load

发表回复

您的电子邮箱地址不会被公开。

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