自动装配【Spring autowire】
public class AutoWiringDao {
private String daoName; public void setDaoName(String daoName) {
this.daoName = daoName;
} public String getDaoName() {
return daoName;
} public void say(String word) {
System.out.println(daoName + "===AutoWiringDao===" + word);
} }
public class AutoWiringService { private AutoWiringDao autoWiringDao1; private AutoWiringService() {
System.out.println("无参构造方法");
} private AutoWiringService(AutoWiringDao autoWiringDao3) {
autoWiringDao1 = autoWiringDao3;
System.out.println("有参构造方法===" + autoWiringDao1.getDaoName());
} public void setAutoWiringDao1(AutoWiringDao autoWiringDao) {
autoWiringDao1 = autoWiringDao;
} public void say(String word) {
autoWiringDao1.say(word);
}
}
以上是所需要的类AutoWiringService与类AutoWiringDao。
1、byName
spring-autowiring.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
default-autowire="byName" >
<bean id="autoWiringDao" class="com.wangzhu.spring.autowiring.AutoWiringDao">
<property name="daoName" value="autoWiringDao"/>
</bean>
<bean id="autoWiringDao1" class="com.wangzhu.spring.autowiring.AutoWiringDao">
<property name="daoName" value="autoWiringDao1"/>
</bean> <bean id="autoWiringDao2" class="com.wangzhu.spring.autowiring.AutoWiringDao">
<property name="daoName" value="autoWiringDao2"/>
</bean>
<bean class="com.wangzhu.spring.autowiring.AutoWiringDao">
<property name="daoName" value="null"/>
</bean> <bean id="autoWiringService" class="com.wangzhu.spring.autowiring.AutoWiringService"></bean>
</beans>
测试:
AutoWiringService service = getBean("autoWiringService");
service.say("this is a test autowire!");
输出:
无参构造方法
autoWiringDao1===AutoWiringDao===this is a test autowire!
备注:通过byName方法进行自动装配,
1)、需要无参构造方法;
2)、需要有同名的成员变量,以及该变量的set方法。
2、byType
只需要更改spring-autowiring.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
default-autowire="byType" >
<bean class="com.wangzhu.spring.autowiring.AutoWiringDao">
<property name="daoName" value="null"/>
</bean> <bean id="autoWiringService" class="com.wangzhu.spring.autowiring.AutoWiringService"></bean>
</beans>
输出:
无参构造方法
null===AutoWiringDao===this is a test autowire!
备注:通过byType方法进行自动装配,
1)、需要无参构成方法;
2)、同类型的Bean只能存在一个,否则将抛出异常;
3)、需要该成员变量的set方法,其变量名随意,故在spring-autowiring.xml中只需指定该Bean的class即可。
3、constructor
只需要更改spring-autowiring.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
default-autowire="constructor" > <bean class="com.wangzhu.spring.autowiring.AutoWiringDao">
<property name="daoName" value="null"/>
</bean> <bean id="autoWiringService" class="com.wangzhu.spring.autowiring.AutoWiringService"></bean>
</beans>
输出:
有参构造方法===null
null===AutoWiringDao===this is a test autowire!
备注:通过constructor方法进行自动装配,
1)、需要对应的有参构造方法,若无则抛出异常,当然若有无参构造方法,则不会抛出异常;
2)、当只有一个同类型的成员变量的Bean时,直接指定该Bean的class即可;
3)、同有多个同类型的成员变量的Bean时,其会根据该Bean的名称与构造方法中的形参名进行比较,若不一样,则直接调用无参构造方法。
自动装配【Spring autowire】的更多相关文章
- Spring笔记04(DI(给属性赋值),自动装配(autowire))
给不同数据类型注入值: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- 深入理解Spring系列之七:web应用自动装配Spring配置
转载 https://mp.weixin.qq.com/s/Lf4akWFmcyn9ZVGUYNi0Lw 在<深入理解Spring系列之一:开篇>的示例代码中使用如下方式去加载Spring ...
- Spring学习记录(三)---bean自动装配autowire
Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系,少写几个ref autowire: no ---默认情况,不自动装配,通过ref手动引用 byName---根据 ...
- [转载]Spring Autowire自动装配介绍
转自: http://www.cnblogs.com/zhishan/p/3190757.html 在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型 ...
- Spring Autowire自动装配介绍
在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...
- Spring Autowire自动装配
在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...
- spring的自动装配基础
当开始看别人的代码使用注解的时候,以为照着别人的代码写,也写一个注释就能实现这样的功能,但是,现在开始考虑自动装配时怎样实现的. 首先,如果如果知道如何手动在xml配置中"装配bean&qu ...
- spring的自动装配(default-autowire="byName")
自动装配,官方给出的定义是这样:Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自 动让Spring通过检查BeanFactory中的内 ...
- Spring入门(5)-自动装配Bean属性
Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...
- Spring(三)之自动装配、表达式
自动装配 自动装配(autowire)协作者 Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自动让Spring通过检查BeanFact ...
随机推荐
- ADO.NET笔记——读取二进制大对象(BLOB)
相关知识: 在SQL Server中,一般情况下,每行数据的总长度不能超过8K字节.因此,下列数据类型的长度,也不能超过8K字节:binary,char(),nchar(),varchar(),nva ...
- align=absMiddle属性设置
AbsBottom 图像的下边缘与同一行中最大元素的下边缘对齐.AbsMiddle 图像的中间与同一行中最大元素的中间对齐.Baseline 图像的下边缘与第一行文本的下边缘对齐.Bottom 图像的 ...
- 搭建eclipse环境下 Nutch+Mysql 二次开发环境
最近看了下Nutch,目前Nutch最新版本2.3.1,支持Hbase.MongoDB等存储,但在搭建和测试过程中发现对Mysql 的支持好像有点问题. 后来将Nutch版本改为2.2.1.基于Nut ...
- Hadoop上路-04_HBase0.98.0入门
以下操作在Hadoop分布式集群基础上进行. 一.分布式环境搭建 下载:)验证 3)修改%HBASE%/conf/hbase-env.sh 4)修改$HBASE_HOME/conf/hbase-sit ...
- arcobject 相关
要素添加: http://resources.esri.com/help/9.3/arcgisengine/arcobjects/esriGeoDatabase/IFeatureClass.Inser ...
- LANMP 如何禁止访问 .htaccess 文件
很多朋友问我,为什么他已经在 Apache 规则里面加了禁止别人直接下载 .htaccess 文件,为什么还是可以下载? 其实这个很简单,因为 .htaccess 在 LANMP 环境下,当他作为文件 ...
- js IDE WebStorm 注册码
webStorm : UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA ...
- Daject初探之Record模型
上一篇博文我简单介绍了Daject以及Daject的Table模型,Table模型是对一张数据表的抽象,从数据表的级别处理数据,而Record模型是对单条数据记录的抽象,从记录的级别处理数据. 这一篇 ...
- VB 思维导图总结(三)
续上篇.vb总结之“思维导图”(2) 第十章.绘制图形 第十一章.数据库技术... 第十二章.总结! 相信有了vb的一个基础,应对接下来的学习会顺畅些.加油!
- NET
NET狂官方面试题-数据库篇答案 题目:http://www.cnblogs.com/dunitian/p/6028838.html 汇总:http://www.cnblogs.com/dunit ...