在Spring中,支持 5 自动装配模式。

no – 缺省情况下,自动配置是通过“ref”属性手动设定,在项目中最常用
byName – 根据属性名称自动装配。如果一个bean的名称和其他bean属性的名称是一样的,将会自装配它。
byType – 按数据类型自动装配。如果一个bean的数据类型是用其它bean属性的数据类型,兼容并自动装配它。
constructor – 在构造函数参数的byType方式。
autodetect – 如果找到默认的构造函数,使用“自动装配用构造”; 否则,使用“按类型自动装配”。

示例

1、Auto-Wiring "no"’这是默认的模式,需要通过 "ref" 属性来连接 bean。

  1. package org.spring.autowring;
  2.  
  3. public class Person {
  4.  
  5. public Person(Ability ability){
  6. super();
  7. this.ability=ability;
  8. }
  9.  
  10. private Ability ability;
  11.  
  12. public Ability getAbility() {
  13. return ability;
  14. }
  15.  
  16. public void setAbility(Ability ability) {
  17. this.ability = ability;
  18. }
  19.  
  20. @Override
  21. public String toString(){
  22. return "Person=[ablity=[skill="+this.ability.getSkill()+"]]";
  23. }
  24.  
  25. }
  1. package org.spring.autowring;
  2.  
  3. public class Ability {
  4.  
  5. private String skill;
  6.  
  7. public String getSkill() {
  8. return skill;
  9. }
  10.  
  11. public void setSkill(String skill) {
  12. this.skill = skill;
  13. }
  14. }
  1. <!-- no – 缺省情况下,自动配置是通过“ref”属性手动设定 -->
  2. <bean id="person" class="org.spring.autowring.Person">
  3. <property name="ability" ref="ability"></property>
  4. </bean>
  5. <bean id="ability" class="org.spring.autowring.Ability">
  6. <property name="skill" value="Java Programming"></property>
  7. </bean>

2、Auto-Wiring "byName" 按属性名称自动装配

  1. <!-- Auto-Wiring "byName" 按属性名称自动装配 -->
  2. <bean id="person" class="org.spring.autowring.Person" autowire="byName"/>
  3. <bean id="ability" class="org.spring.autowring.Ability">
    <property name="skill" value="Java Programming"></property>
    </bean>

3、Auto-Wiring "byType" 按属性名称自动装配

  1. <!-- Auto-Wiring "byType" 按属性名称自动装配 -->
  2. <bean id="person" class="org.spring.autowring.Person" autowire="byType"/>
  3. <bean id="ability" class="org.spring.autowring.Ability">
  4. <property name="skill" value="Java Programming"></property>
  5. </bean>

4、constructor – 在构造函数参数的byType方式

  1. <!-- constructor – 在构造函数参数的byType方式。 -->
  2. <!-- 构造方法的参数 -->
  3. <bean id="person" class="org.spring.autowring.Person">
  4. <constructor-arg>
  5. <ref bean="ability"></ref>
  6. </constructor-arg>
  7. </bean>
  8. <bean id="ability" class="org.spring.autowring.Ability">
  9. <property name="skill" value="Java Programming"></property>
  10. </bean>

Spring自动装配Bean的五种方式的更多相关文章

  1. Spring容器装配Bean的三种方式

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  2. Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire

    创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...

  3. Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  4. Spring自动装配Bean详解

    1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiring ‘byType 4.      Auto-Wirin ...

  5. spring装配bean的三种方式及其混合装配

    在spring容器中装配bean有三种基本方式和混合装配方式: 隐式的bean自动发现机制和自动装配 在java中进行显式配置 在xml中配置 混合装配(在多个java文件中配置.在JavaConfi ...

  6. Spring装配Bean的三种方式+导入和混合配置

    目录 Spring IoC与bean 基于XML的显式装配 xml配置的基本结构 bean实例的三种创建方式 依赖注入的两种方式 构造器注入方式 setter方法注入方式 利用命名空间简化xml 基于 ...

  7. Spring自动装配bean

    Spring推荐面向接口编程,这样可以很好的解耦具体的实现类. CompactDisc.class 文件: public interface CompactDisc { void play(); } ...

  8. spring 装配bean的三种方式

    这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微 ...

  9. spring 自动装配 bean 有哪些方式?

    Spring容器负责创建应用程序中的bean同时通过ID来协调这些对象之间的关系.作为开发人员,我们需要告诉Spring要创建哪些bean并且如何将其装配到一起. spring中bean装配有两种方式 ...

随机推荐

  1. Ubuntu16.04 Tomcat9的安装

    1. 从http://tomcat.apache.org/download-90.cgi 下载apache-tomcat-9.0.0.M11.tar.gz 2. 上传到Linux后移动到/opt/to ...

  2. (转)c++ new/delete,new[]/delete[]原理解析

    转自: 推荐:http://www.cnblogs.com/hazir/p/new_and_delete.html http://blog.csdn.net/crazyboyzzx/article/d ...

  3. XML基础知识-->Spring配置

    XML的特殊字符 XML中共有5个特殊的字符,分别是:&<>“’.如果配置文件中的注入值包括这些特殊字符,就需要进行特别处理.有两种解决方法:其一,采用本例中的<![CDAT ...

  4. Redis异构集群数据在线迁移工具Redis-Migrate-Tool【转】

    摘要:Redis-Migrate-Tool(后面都简称RMT),是唯品会开源的redis数据迁移工具,主要用于异构redis集群间的数据在线迁移,即数据迁移过程中源集群仍可以正常接受业务读写请求,无业 ...

  5. ios开发之 --调用系统的页面,显示中文

    在开发的过程中,我们会接入很多的sdk,比如相机,相册,是否允许获取位置等,大多数的情况下是默认显示英文, 在plist文件里面添加一个key就可以了,如下图: key:Localization na ...

  6. 调用PostgreSQL存储过程,找不到函数名的问题

    PostgreSQL的表,函数名称都是严格区分大小写的,所以在使用的时候没有注意大小写问题容易导致找不到函数名的错误,但最近两天我们发现,如果函数参数使用了自定义的数据类型,也会发生这个问题. 问题描 ...

  7. Map中存放数组

    Map<String,Object> map = new HashMap<String, Object>(); Map<String,String> agentMa ...

  8. 160307、Java调用Oracle存储过程返回结果集

    一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)   AS BEGI ...

  9. Codeforces Round #425 (Div. 2))——A题&&B题&&D题

    A. Sasha and Sticks 题目链接:http://codeforces.com/contest/832/problem/A 题目意思:n个棍,双方每次取k个,取得多次数的人获胜,Sash ...

  10. Storm-源码分析- metric

    首先定义一系列metric相关的interface, IMetric, IReducer, ICombiner (backtype.storm.metric.api) 在task中, 创建一系列bui ...