自动装配【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 ...
随机推荐
- MATLAB light material lighting
clf;[X,Y,Z]=sphere(40);colormap(jet)subplot(1,2,1),surf(X,Y,Z),axis off square,shading interplight(' ...
- sql语句中like匹配的用法详解
在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用 ...
- 1106. Lowest Price in Supply Chain (25)
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- MySQL 5.7.9多源复制报错修复
版本:5.7.9 用5.7.9的版本搭建MySQL多源复制测试环境 开发说复制出现问题,上去看了一下: mysql> show slave status\G******************* ...
- ThinkPHP中PATHINFO模式优化
ThinkPHP 3.1.2官方手册 第16.2章节 <隐藏index.php>中提到在Ngnix中隐藏index.php实现SEO友好的方法,其中使用了如下的代码 location / ...
- vs2010的11个调试技巧和方法
调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总结了可 ...
- java移位操作符
<<:左移操作符,右边补0,相当于乘二乘二... >>:右移操作符,左边补符号位(正数补0,负数补1),相当于除二除二... >>>:无符号右移,左边补0,相 ...
- inputstream与其他格式的转换
1.InputStream 转换成InputSource . InputStream inputStream = request.getInputStream(); InputSource input ...
- c语言编程之栈(链表实现)
用链表实现栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; //define a struct descirbe a stac ...
- Eclipse配置默认的编码集为utf-8
既然开了博,那就来点有用的. 可以使用下面的方法,让Eclipse对所有的项目里所有文件都按照指定的编码解析. Eclipse安装目录下有一个eclipse.ini文件, 用记事本打开即可,在最后一行 ...