网站首页 > 精选教程 正文
bean的继承和依赖
spring除了提供了一般的配置bean的方式之外,还实现了java中继承的特性,设置bean的父子关系,这样对于一些重复的配置就可以进行省略
bean的继承
配置bean的父子关系,父bean有的东西,子bean全部继承过来,不一样的进行覆盖
<!-- bean的继承关系 -->
<bean id="parent" class="com.zhanghe.study.spring4.beans.beantest.Person">
<property name="name" value="张三"/>
<property name="car" ref="car"/>
<property name="cars">
<list>
<ref bean="car"/>
<ref bean="car2"/>
</list>
</property>
<property name="carMap">
<map>
<entry key="AA" value-ref="car"/>
<entry key="BB" value-ref="car2"/>
</map>
</property>
</bean>
<!-- 使用parent属性可以继承对应bean的所有属性 -->
<bean id="son" parent="person">
<property name="name" value="张飞"/>
</bean>
抽象bean
既然spring提供了继承,那么也就存在了专门用于被继承的bean,而不进行实例化,这种bean被称为抽象bean,使用abstract="true"表明这是一个抽象bean
由于抽象bean不进行实例化,所以抽象bean的class属性是没有意义的,可以省略不写
<!-- 抽象bean,不可被实例化-->
<bean id="abstract" abstract="true">
<property name="name" value="张三"/>
<property name="car" ref="car"/>
<property name="cars">
<list>
<ref bean="car"/>
<ref bean="car2"/>
</list>
</property>
<property name="carMap">
<map>
<entry key="AA" value-ref="car"/>
<entry key="BB" value-ref="car2"/>
</map>
</property>
</bean>
<!-- 使用parent属性可以继承对应bean的所有属性 -->
<bean id="personSon" class="com.zhanghe.study.spring4.beans.beantest.Person" parent="abstract">
<property name="name" value="张飞"/>
</bean>
注意:抽象bean是不可以被实例化的,也就是说不可以使用上下文强制的获取该bean,否则会报错
org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'abstract': Bean definition is abstract
bean的依赖
有时候需要保证bean实例化的先后顺序,在创建一个bean的时候必须保证另外一个bean也被创建,如果另一个bean不存在,则无法正常实例化该bean
可以使用depends-on来实现bean之间的依赖关系
<!-- 依赖关系 -->
<bean id="person2" class="com.zhanghe.study.spring4.beans.beantest.Person" parent="abstract" depends-on="depend1">
<property name="name" value="关羽"/>
</bean>
<bean id="depend1" class="com.zhanghe.study.spring4.beans.beantest.Person" parent="abstract">
<property name="name" value="刘备"/>
</bean>
如果所依赖的bean不存在,实例化失败
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'person2' defined in class path resource [spring-config.xml]: 'person2' depends on missing bean 'depend1'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'depend1' available
猜你喜欢
- 2024-11-27 JAVA面向对象的三大特征——继承
- 2024-11-27 JAVA中的注解可以继承吗?
- 2024-11-27 学长带你学习java第三课——继承
- 2024-11-27 java技术专家带你深入java核心技术:反射+继承设计技巧+枚举类
- 2024-11-27 【编程】Java中的继承和多态,你了解多少?
- 2024-11-27 Java开发:java面向对象思想之继承
- 2024-11-27 用最通俗易懂的例子讲明白继承和组合的本质区别
- 2024-11-27 java继承的概念是什么?
- 2024-11-27 java基础-3-继承
- 2024-11-27 Java小白成长记:Java如何实现封装、继承、解析解构
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)