你好,游客 登录 注册 搜索
背景:
阅读新闻

Spring autowire 自动装配简介

[日期:2016-12-11] 来源:Linux社区  作者:nvd11 [字体: ]

Spring autowire 自动装配简介

注意本文与一般spring 标注@Autowire 无关

如下例子定义了3个类 Dperson Dcar & Daddress
其中Dperson 要引用另外两个类

Dperson

package com.home.autowire;

public class Dperson {
    private String name;
    private Dcar car;
    private Daddress address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Dcar getCar() {
        return car;
    }

    public void setCar(Dcar car) {
        this.car = car;
    }

    public Daddress getAddress() {
        return address;
    }

    public void setAddress(Daddress address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Dperson [name=" + name + ", car=" + car + ", address="
                + address + "]";
    }

}

Dcar

package com.home.autowire;

public class Dcar {
    private String brand;
    private int price;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Dcar [brand=" + brand + ", price=" + price + "]";
    }

}

Daddress

package com.home.autowire;

public class Daddress {
    private String city;
    private String street;
    private int number;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    @Override
    public String toString() {
        return "Daddress [city=" + city + ", street=" + street + ", number="
                + number + "]";
    }

}

一般的bean定义方法(xml)

注意下面引用了p Namespace

<bean id="car" class="com.home.autowire.Dcar" p:brand="Audi" p:price="10000"/>

<bean id="address" class="com.home.autowire.Daddress" p:city="Canton" p:street="teenho" p:number="103"/>

<!--  normal assemble -->
<bean id="person1" class="com.home.autowire.Dperson" p:name="Bill" p:car-ref="car" p:address-ref="address"/>

上面这个方法是最常用的, 也是最清晰的, 一般项目也推荐上面的方法。

autowire 自动装配

在这个例子种, 所谓autowire 自动装配就是指 不用在Dperson类的bean中手动指定每个属性的值, spring会根据ByName或者ByType去找

ByName:


    <bean id="car" class="com.home.autowire.Dcar" p:brand="Audi" p:price="10000"/>

    <bean id="address" class="com.home.autowire.Daddress" p:city="Canton" p:street="teenho" p:number="103"/>

  <!--  auto wire-->
  <bean id="person2" class="com.home.autowire.Dperson" p:name="Lily" autowire="byName"/>

上面的例子例子, bean person2 会在spring xml种查找有没有 跟属性名一样名字的bean, 有就装配, 没有则赋值null

ByType:


    <bean id="car1" class="com.home.autowire.Dcar" p:brand="Audi" p:price="10000"/>

    <bean id="address1" class="com.home.autowire.Daddress" p:city="Canton" p:street="teenho" p:number="103"/>

  <!--  auto wire byType-->
    <bean id="person3" class="com.home.autowire.Dperson" p:name="Jessie" autowire="byType"/>

万一找不到跟属性名一样的bean, 也可以通过byTime来自动装配的

小结

autowire会令到spring 配置文件更加简介, 但���可读性下降了, 一般情况下其实不建议使用, 但是某些特殊情况, 例如spring 嵌入其他framework(strurt2 hibernate), autowire有时的确会使程序猿更加方便。

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-12/138194.htm

linux
相关资讯       autowire 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款