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. 解决grub引导错误的一次经历

    我的电脑上一共是两块硬盘,1块固态硬盘(sda)装了win7,另外一块普通硬盘(sdb)装了ubuntu和centos两个系统,系统启动的引导是装在sdb上面的ubuntu的grub2,它负责选择不同 ...

  2. yaf运行错误:Class 'Yaf_Application' not found

    提示:致命错误 Yaf_Application 基类没有加载进去 一检查:phpinfo() 里yaf 扩展有没有安装上 扩展也安装进去了 这时在分布式配置文件的重写 也是正确 这时百思不得其解,没办 ...

  3. 封装底层Ajax

    创建Ajax简易步骤:创建Ajax对象:var xhr=new XMLHttpRequest();链接服务器:xhr.open('get','a.php',true);发送请求或数据:xhr.send ...

  4. 批量修改文件后缀(Python)

    近期下载了很多各种教程, 但是不幸的是后缀名都是 ".mp4", 而本人喜欢 ".rmvb" 后缀,由于有轻微洁癖, 受不了后面的 ".mp4&quo ...

  5. eclipse安装pydev插件

    打开Eclipse,找到Help菜单栏,进入Install New Software…选项. 点击work with:输入框的旁边点击Add…,Name可以随便输入,Location是http://p ...

  6. boost muti-thread

    背景 •       今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率:为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序: GUI应用程序将那些费时,复杂的处理以线程的形式单独 ...

  7. UML 小结(2)- 理论理解

    什么是UML: UML是统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言. UML为面向对象开发系统的产品进行说明.可视化 ...

  8. “Microsoft Visual Studio遇到了问题,需要关闭”解决办法

    运行VS2008,打开项目,弹出错误界面 . 解决办法:将项目中的所有设计窗体关闭并保存,重新打开就OK~

  9. linux驱动之I2C

    include/linux/i2c.h struct i2c_msg;struct i2c_algorithm;struct i2c_adapter;struct i2c_client;struct ...

  10. mac 搭建git服务器

      一.简单搭建,不提供复杂的权限管理: 远程建立git用户,并打开ssh服务:见http://www.cnblogs.com/whj198579/archive/2013/04/09/3009350 ...