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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • centos7怎么查看ip地址

    centos7怎么查看ip地址在Linux系统下查询CentOS7的ip地址我们输入ip查询命名ipaddr也可以输入ifconfig查看ip,但此命令会出现3个条目,centos的ip地址是ens33条目中的inet值。输入命令:ipaddr注意截图处没有看到intent使用:ifconfig命令查询结果如下:发现ens33没有inet这个属性,那么就没法通过IP地址连接虚拟机。接着来查看ens33网卡的配置:先查看一下cd/etc/sysconfig/network-scripts

    2022年10月26日
  • PLSQL详细使用教程及下载地址「建议收藏」

    PLSQL详细使用教程及下载地址「建议收藏」Oracle数据库连接必备,大公司玩转oracle数据库必备,虽然现在已经都用MYSQL替换了,但是不可否认这款软件的实力。中文版还具有语法加强、SQL和PL/SQL帮助、对象描述等功能特性。下载地址:http://kk04.cn/f-6339.html详细使用教程:http://kk04.cn/f-6342.html…

    2022年5月2日
  • SQL Server中QUOTENAME函数的使用

    SQL Server中QUOTENAME函数的使用–函数QUOTENAME–功能:返回带有分隔符的Unicode 字符串,分隔符的加入可使输入的字符串成为有效的Microsoft SQL Server 2005 分隔标识符。–语法QUOTENAME ( character_string [ , quote_character ] ) –举例说明:–比如你有一个表,名字叫index–你有一个动

    2022年7月25日
  • SpringMVC执行流程和原理「建议收藏」

    SpringMVC执行流程和原理「建议收藏」SpringMVC流程:01、用户发送出请求到前端控制器DispatcherServlet。02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。03、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。04、Dispatche…

    2022年6月28日
  • C++动态库和静态库_动态库和静态库调用方法

    C++动态库和静态库_动态库和静态库调用方法1、前言从事软件工作也有两年了,C++静态库和动态库也用了不少,但都是依葫芦画瓢,一直没具体去研究一下二者的区别,加载方式等,今天花时间看了几篇博客,重新学习了一下,做出如下笔记。2、定义静态库和动态库从字面意思来看,区别就是静态和动态。而这里的静态和动态指的是库的链接阶段。可以看如下的编译过程。静态库:在链接阶段库将会与目标汇编后的目标文件.o一起打包生成可执行文件。成为可执行…

    2022年9月29日
  • 图书管理系统的系统设计(图书管理系统任务书)

    图书管理系统设计与实现图书馆人员结构复杂,人员数量有限,涉及方面很广,如果还使用手工操作处理图书借阅问题,工作将非常繁琐,需要大量的人力、物理、财力,极大的浪费了资源,对于图书管理人员来说,图书馆管理包括图书信息管理、图书类别管理、借阅信息管理、管理员信息管理等等。而这些项目在过去靠手工操作,需要手工记录这些事情,不但麻烦,还经常出错,给广大用户带来很多不便,因此,开发这样一套图书馆管理系统软件。让管理员方便的管理图书及用户信息,方便用户查找图书。1、本课程设计的目的(1)掌握企业级应用系统的基本

    2022年4月16日

发表回复

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

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