src\dayday\Person.java

package dayday;

/**
* Created by I am master on 2016/11/28.
*/
public class Person {
private String name;
private int age;
private City city;
private Car car;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public void setCity(City city){
this.city=city;
}
public void setCar(Car car){
this.car=car;
}
public void toprint(){
System.out.println("["+"name="+name+" age="+age+" car"+car+" city"+city+"]");
}
}

src\daydayCity.java

package dayday;

/**
* Created by I am master on 2016/11/28.
*/
public class City {
private String livecity;
private String street;
public void setLivecity(String livecity) {
this.livecity=livecity;
}
public void setStreet(String street{
this.street=street;
}
public String getLivecity(){
return livecity;
}
public String getStreet(){
return street;
}
public String toString(){
return "["+"city="+livecity+" street"+street +"]";
}
}

src\dayday\Car.java

package dayday;

/**
* Created by I am master on 2016/11/28.
*/
public class Car {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public String toString(){
return "["+"carname="+name+"]";
}
}

src\dayday\Main.java

package dayday;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
ApplicationContext ctx= new ClassPathXmlApplicationContext("beans.xml");
Person person1=ctx.getBean("person1",Person.class);
Person person2=ctx.getBean("person1",Person.class);
person1.toprint();
person2.toprint();
}
}

src\beans.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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="car" class="dayday.Car" p:name="Audi"/>
<bean name="city" class="dayday.City" p:livecity="shaoxing" p:street="xinchang"/>
<!--通过byType进行装配-->
<bean name="person1" class="dayday.Person" p:name="dayday" p:age="18" autowire="byType"/>
<!--通过byName进行装配-->
<bean name="person2" class="dayday.Person" p:name="dayday" p:age="18" autowire="byName"/>
</beans> 运行结果

[name=dayday age=18 car[carname=Audi] city[city=shaoxing streetxinchang]]
[name=dayday age=18 car[carname=Audi] city[city=shaoxing streetxinchang]]

装配机制

byName根据bean的名字和当前bean的setter风格的属性名进行自动匹配,若有匹配的,则进行自动装配,若没有匹配的,则不装配

比如bean中有setXXX()的方法,且在配置文件中,bean中id="XXX"则可进行自动装配,id="XXX1"就不可以装配

byType根据bean的类型和当前bean的属性进行自动装配,若IOC容器中有一个及以上的类型匹配的bean,则将抛出异常

在实际开发中很少用自动装配,因为代码不够一目了然,而且存在很多局限性,如不能两种装配方式同时进行,如果选择了自动了装配,就不能手动配置...

 

Spring中的自动装配的更多相关文章

  1. Spring中类型自动装配--byType

    在Spring中,“类型自动装配”的意思是如果一个bean的数据类型与其它bean属性的数据类型相同,将自动兼容装配它. 例如,一个“persion” bean 公开以“ability”类数据类型作为 ...

  2. Spring(六)之自动装配

    一.自动装配模型 下面是自动连接模式,可以用来指示Spring容器使用自动连接进行依赖注入.您可以使用元素的autowire属性为bean定义指定autowire模式. 可以使用 byType 或者  ...

  3. Spring 由构造函数自动装配

    Spring 由构造函数自动装配,这种模式与 byType 非常相似,但它应用于构造器参数. Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 ...

  4. 6、Spring教程之自动装配

    自动装配说明 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean. Spring中bean有三种装配机制,分别是: 在xml中显式配置 ...

  5. spring第一课,beans配置(中)——自动装配

    •Spring IOC 容器可以自动装配 Bean. 需要做的仅仅是在 <bean> 的 autowire 属性里指定自动装配的模式 •byType(根据类型自动装配): 若 IOC 容器 ...

  6. Spring - 配置Bean - 自动装配 关系 作用域 引用外部属性文件

    1 Autowire自动装配1.1 使用:只需在<bean>中使用autowire元素<bean id="student" class="com.kej ...

  7. Spring 学习——Spring注解——Autowiring(自动装配)

    装配方式 方式一:默认 方式二:byName:根据属性名称自动装配.会查找Bean容器内部所有初始化的与属性名成相同的Bean,自动装配.(需要通过set方法注入,注入Bean的id名称需要和实体类的 ...

  8. spring bean autowire自动装配

    转自:http://blog.csdn.net/xiao_jun_0820/article/details/7233139 autowire="byName"会自动装配属性与Bea ...

  9. Spring学习笔记--自动装配Bean属性

    Spring提供了四种类型的自动装配策略: byName – 把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中. byType – 把与Bean的属性具有相同类型 ...

随机推荐

  1. Python常用内置函数总结

    一.数学相关 1.绝对值:abs(-1)2.最大最小值:max([1,2,3]).min([1,2,3])3.序列长度:len('abc').len([1,2,3]).len((1,2,3))4.取模 ...

  2. Eclipse中全局搜索和更替

    Eclipse全局搜索步骤  使用快捷键"ctrl+H"打开文件搜索对话框,选择"File Search"标签,在Containing text中输入你需要搜索 ...

  3. 初始JavaScript

    本文是笔者在看廖雪峰老师的JavaScript教程时的总结 一.加载 JavaScript           1.直接在html语句中写入JavaScript语句           2.在html ...

  4. Unity3D 中的定时器

    不算上 C# 自带的,目前知道两种,以下分别介绍. 1.每帧检查 定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行相应功 ...

  5. Sphinx Search 学习 (一)

    参考资料一:(中文)http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html (官方)http://sphinxsearch.com/doc ...

  6. MVC 路由介绍

    我们新建一个ASP.NET MVC Web程序的时候,会生成一个Global.asax文件.如下: using System; using System.Collections.Generic; us ...

  7. PC小技巧

    一.如何在office 2010中安装 Microsoft Office Document Imaging 我用的是office 2010版本,如下操作可以把照片转换成文本:第一步:使用Microso ...

  8. 【自动化学习笔记】_环境搭建Selenium2+Eclipse+Java+TestNG_(一)

    目录 第一步  安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下 ...

  9. ionic 的下拉刷新 与 上拉加载

    <ion-view view-title="消息通知"> <ion-content class="padding"> <!-- & ...

  10. ORACLE中的支持正则表达式的函数

    ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBS ...