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. 转载:Android Studio 快捷键

    Android Studio使用技巧系列教程(一) 分类: android studio2015-07-08 10:04 4774人阅读 评论(6) 收藏 举报 android开发ideandroid ...

  2. AngularJS(16)-路由

    AngularJS 路由 本章节我们将为大家介绍 AngularJS 路由. AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web ...

  3. CSS3 text-rendering属性

    这种非标准的属性目前不被推荐.我们一般会找一个可以替代的方法来完成相同的功能,不到外不得已,最好别用.   CSS的这个text-rendering属性通常被用在Windows和Linux系统中,用来 ...

  4. php 图形验证码的3种方法

    生成图形验证码需要使用php GD库来生成,如果你没开户GD库我们需要在php.ini文件找到extension=php_gd2.dll 去掉前面的;就行了,然后重启apache 或iis环境即可 检 ...

  5. php文本操作方法集合比较

    fgets和fputs.fread和fwrite.fscanf和fprintf 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数 ...

  6. php 文件上传简单类---限制仅上传jpg文件

    php 文件上传代码,限制只能上传jpg格式文件,也可以自行添加其它扩展名的文件. <?php /* * 图片上传类 仅限JPG格式图片 * edit by www.jbxue.com at 2 ...

  7. 内部技术分享的 PPT

    本文的基础是搞了一次内部的技术分享,在此也分享一下本次的PPT的一些内容.先列一下大概内容吧. EF-Code First API(WCF.WebAPI) Xaml MVVM AOP Xamarin. ...

  8. Java从入门到精通——基础篇之JSTL标签

    一.语言基础 EL(Expression Language)表达式,目的:为了使JSP写起来更加简单.提供了在 JSP 中简化表达式的方法. 二.分类 核心标签库:提供条件判断.属性访问.URL处理及 ...

  9. Activity的Launch mode详解 singleTask正解

    Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...

  10. SharePoint 优化显示WebParts

    在开发sharepoint中,经常遇到需要自定义显示列表中的一部分作为导航的内容, 如公告栏,新闻链接,最新动态等.... 我们通常需要显示一个列表的标题,并且限制字符长度, 外加一些条件,如按创建的 ...