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. 使用requestAnimationFrame做动画效果二

    3月是个好日子,渐渐地开始忙起来了,我做事还是不够细心,加上感冒,没精神,今天差点又出事了,做过的事情还是要检查一遍才行,哎呀. 使用requestAnimationFrame做动画,我做了很久,终于 ...

  2. javascript中this指针

    看完此片文章豁然开朗,非常感谢.javascript技术难点(三)之this.new.apply和call详解 下面说一说自己的理解: this指针总是指向调用他的对象,其实我更愿意理解为:this指 ...

  3. 【转】Pycharm的激活

    如果要基于Python进行开发的话,那么pycharm是个不错的选择,试用一个月以后需要激活,原文如下: 原文链接:http://blog.csdn.net/lanchunhui/article/de ...

  4. ubuntu 14.04 64位安装iNodeClient

    ubuntu 14.04 64位安装iNodeClieng(华三校园客服端) http://pan.baidu.com/s/12dpxk ubuntu 14.04 64bit Install H3C ...

  5. Css Js Loader For Zencart

    Css Js Loader 描述:这个插件很早就出来了,可能知道人非常少 这个插件的功能是整合所有的网站的CSS和JS内容到一个文件里边. 因为CSS和JS文件到了一个文件,加快了程序的运行 在配合其 ...

  6. 节约内存:Instagram的Redis实践(转)

    一.问题:     数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求. 二.解决方案:      1.通过高速服务器Cache缓存数据库数据      2.内存数据库 三.主流解Ca ...

  7. jrebel注意事项

    -Xms2048m -Xmx2048m -XX:MaxPermSize=4096m -noverify -javaagent:C:\Users\Administrator\.IntelliJIdea2 ...

  8. Windows下安装pip(转自http://www.cnblogs.com/yuanzm/p/4089856.html)

    windows下面安装Python和pip终极教程 在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算 ...

  9. asp.net c#过滤html代码,净化DIV SPAN等

    public static string GetSafeHtml(string val) { if (string.IsNullOrEmpty(val)) { return string.Empty; ...

  10. 删除 https://tfs.visualstudio.com上的项目

    比如注册的tfs地址为https://zhaobl.visualstudio.com,要删除的项目是 bushub 那么需要使用VS2013以上的 C:\Program Files (x86)\Mic ...