zoukankan      html  css  js  c++  java
  • Spring中的自动装配

    srcdaydayPerson.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+"]");
    }
    }

    srcdaydayCity.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 +"]";
    }
    }

    srcdaydayCar.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+"]";
    }
    }

    srcdaydayMain.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();
    }
    }

    srceans.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,则将抛出异常

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

     
  • 相关阅读:
    让弹幕给 PPD 生个孩子
    circle_clock 简单canvas实现圆弧时钟
    JS练习实例--编写经典小游戏俄罗斯方块
    就这样,我把4000张美女和帅哥照片下载本地了
    移动端开发的兼容问题(自我总结篇)
    css两栏布局、圣杯布局、双飞翼布局
    浅析Node与Element
    那是我在夕阳下的code
    flex布局中父容器属性部分演示效果
    关于CDN那些事
  • 原文地址:https://www.cnblogs.com/Hdaydayup/p/6112639.html
Copyright © 2011-2022 走看看