spring bean之间的关系:继承,依赖,注入
一 继承
spring中多个bean之间的继承关系,和面向对象中的继承关系类似,直接看代码。
先定义一个Person类
package com.demo.spring.entity; /**
* @author chenyk
* @date 2018年6月15日
*/ public class Person {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }
然后在beans.xml文件中配置:
<bean id="person" class="com.demo.spring.entity.Person" p:address="杭州" abstract="true">
</bean> <bean id="person2" p:name="李四" parent="person">
</bean>
在beans.xml中,我们定义了一个name为person的抽象类,它作为一个父类,封装了共有的属性值address="杭州",由于定义了abstract="true",所以它不能被实例化。然后定义了一个name为person2的类,继承了person。
获取person2对象
@Test
public void testBeanFactory(){
ClassPathResource resource = new ClassPathResource("beans.xml"); //找到资源文件,将bean解析为beanDefinition,
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(resource); //加载beanDefinition到容器中
Person person2 = (Person) beanFactory.getBean("person2");
System.out.println("name="+person2.getName()+";address="+person2.getAddress());
}
运行结果:name=李四;address=杭州
二 依赖:使用depends-on来实现依赖关系
定义一个Person类
package com.demo.spring.entity; /**
* @author chenyk
* @date 2018年6月15日
*/ public class Person {
private String name;
private String address;
private Air air;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Air getAir() {
return air;
}
public void setAir(Air air) {
this.air = air;
}
}
定义Air类
package com.demo.spring.entity; /**
* @author chenyk
* @date 2018年6月15日
*/ public class Air { }
在beans.xml中配置
<bean id="person" class="com.demo.spring.entity.Person" p:name="张三" p:address="杭州" abstract="true">
</bean> <bean id="person2" p:name="李四" parent="person" depends-on="air">
</bean> <bean id="air" class="com.demo.spring.entity.Air">
</bean>
depends-on标签设置了依赖关系,则表示person2的属性air必须存在,否则报错;如果没有depends-on标签,则默认person2的属性air为null。
三 注入 :
注入,我们也可以称为依赖注入,注入的方式有三种:setter方法注入,构造器注入,通过注解的方式注入。这里就不详细讲解了
spring bean之间的关系:继承,依赖,注入的更多相关文章
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Spring Bean之间的关系
bean之间的关系:继承和依赖继承bean的配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父bean的bean称为子bean 子bean从父bean中继承配置,包括 ...
- Ioc和DI之间的关系(依赖注入的核心概念)
1.开篇闲话 由于之前做的很多项目都没接触到这个,后来到了另一个公司,他们的代码结构是基于领域驱动设计的,其中里面的对象都是通过依赖注入方式(Sprint.NET)实现的,也大致了解了哈,在网上搜了些 ...
- spring bean之间的关系:继承;依赖
概要: ' 继承Bean配置 Spring同意继承bean的配置,被继承的bean称为父bean,继承这个父Bean的Bean称为子Bean 子Bean从父Bean中继承配置,包含Bean的属性配置 ...
- 3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/
1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 -& ...
- Spring(九):Spring配置Bean(二)自动装配的模式、Bean之间的关系
XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式,模式包含:byType,byName, ...
- Spring学习--Bean 之间的关系
Bean 之间的关系:继承.依赖. Bean 继承: Spring 允许继承 bean 的配置 , 被继承的 bean 称为父 bean , 继承这个父 bean 的 bean 称为子 bean. 子 ...
- Spring初学之bean之间的关系和bean的作用域
一.bean之间的关系 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- [转载]Spring下IOC容器和DI(依赖注入) @Bean及@Autowired
Spring下IOC容器和DI(依赖注入) @Bean及@Autowired自动装配 bean是什么 bean在spring中可以理解为一个对象.理解这个对象需要换一种角度,即可将spring看做一门 ...
随机推荐
- java中伪共享问题
伪共享(False Sharing) 原文地址:http://ifeve.com/false-sharing/ 作者:Martin Thompson 译者:丁一 缓存系统中是以缓存行(cache l ...
- ElasticSearch(三):Java操作ElasticSearch索引之CRUD
package com.gxy.ESChap01; import java.net.InetAddress; import java.util.HashMap; import java.util.Ma ...
- Integer判断大于 == 127时的坑
在一次判断返回Interger类型的code, 用==结果, 没进去 Integer的值在-128到127时,Integer对象是在IntegerCache.cache产生,会复用已有对象,也就是说 ...
- [matlab] 22.matlab图论实例 最短路问题与最小生成树 (转载)
最短路问题之 Floyd 某公司在六个城市 c1c1,c2c2,….,c6c6 中有分公司,从 cici 到 cjcj 的直接航程票价记在下述矩阵的 (ii,jj) 位置上. (∞∞表示无直接航路), ...
- dbms_redefinition方式普通表改造分区表
--创建一张普通表t_wjq1SEIANG@seiang11g>create table t_wjq1 as select object_id,object_name,created from ...
- 转://SQLNET.EXPIRE_TIME参数
DCD: Dead Connection Detection ,可以用于检测.标记僵死而没有断开会session,再由PMON进行清理,释放资源.开启DCD,只需要在服务端的sqlnet.ora文件中 ...
- 【转】理解WebKit和Chromium: JavaScript引擎简介
转载请注明原文地址:http://blog.csdn.net/milado_nju1. 什么是JavaScript引擎什么是JavaScript引擎?简单来讲,就是能够提供执行JavaScript代码 ...
- Python-wxpy继承关系
聊天对象 通过机器人对象 Bot 的 chats(), friends(),groups(), mps() 方法, 可分别获取到当前机器人的 所有聊天对象.好友.群聊,以及公众号列表. 而获得到的聊天 ...
- windows下使用svn命令行
1.安装“Slik-Subversion-1.9.7-win32.zip”,将路径写入windows的path路径 2.在cmd下可以执行svn 3.应为tortoiseSVN的版本比1的版本低,导致 ...
- Spring Security(十五):5.6 Authentication
Thus far we have only taken a look at the most basic authentication configuration. Let’s take a look ...