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】的更多相关文章

  1. Spring笔记04(DI(给属性赋值),自动装配(autowire))

    给不同数据类型注入值: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  2. 深入理解Spring系列之七:web应用自动装配Spring配置

    转载 https://mp.weixin.qq.com/s/Lf4akWFmcyn9ZVGUYNi0Lw 在<深入理解Spring系列之一:开篇>的示例代码中使用如下方式去加载Spring ...

  3. Spring学习记录(三)---bean自动装配autowire

    Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系,少写几个ref autowire: no ---默认情况,不自动装配,通过ref手动引用 byName---根据 ...

  4. [转载]Spring Autowire自动装配介绍

    转自: http://www.cnblogs.com/zhishan/p/3190757.html 在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型 ...

  5. Spring Autowire自动装配介绍

    在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...

  6. Spring Autowire自动装配

    在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...

  7. spring的自动装配基础

    当开始看别人的代码使用注解的时候,以为照着别人的代码写,也写一个注释就能实现这样的功能,但是,现在开始考虑自动装配时怎样实现的. 首先,如果如果知道如何手动在xml配置中"装配bean&qu ...

  8. spring的自动装配(default-autowire="byName")

    自动装配,官方给出的定义是这样:Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自 动让Spring通过检查BeanFactory中的内 ...

  9. Spring入门(5)-自动装配Bean属性

    Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...

  10. Spring(三)之自动装配、表达式

    自动装配 自动装配(autowire)协作者 Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自动让Spring通过检查BeanFact ...

随机推荐

  1. 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(' ...

  2. sql语句中like匹配的用法详解

    在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用 ...

  3. 1106. Lowest Price in Supply Chain (25)

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  4. MySQL 5.7.9多源复制报错修复

    版本:5.7.9 用5.7.9的版本搭建MySQL多源复制测试环境 开发说复制出现问题,上去看了一下: mysql> show slave status\G******************* ...

  5. ThinkPHP中PATHINFO模式优化

    ThinkPHP 3.1.2官方手册 第16.2章节 <隐藏index.php>中提到在Ngnix中隐藏index.php实现SEO友好的方法,其中使用了如下的代码 location / ...

  6. vs2010的11个调试技巧和方法

    调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总结了可 ...

  7. java移位操作符

    <<:左移操作符,右边补0,相当于乘二乘二... >>:右移操作符,左边补符号位(正数补0,负数补1),相当于除二除二... >>>:无符号右移,左边补0,相 ...

  8. inputstream与其他格式的转换

    1.InputStream 转换成InputSource . InputStream inputStream = request.getInputStream(); InputSource input ...

  9. c语言编程之栈(链表实现)

    用链表实现栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; //define a struct descirbe a stac ...

  10. Eclipse配置默认的编码集为utf-8

    既然开了博,那就来点有用的. 可以使用下面的方法,让Eclipse对所有的项目里所有文件都按照指定的编码解析. Eclipse安装目录下有一个eclipse.ini文件, 用记事本打开即可,在最后一行 ...