Spring 框架Bean的自动装配

来源:互联网 发布:des数据加密算法流程 编辑:程序博客网 时间:2024/06/05 22:59

Spring IOC可以自动装配Bean。

例子

beans-autowire.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 id="address" class="com.spring.test.autowire.Address" p:city="Suzhou" p:street="ShiLu"></bean>    <bean id="car" class="com.spring.test.autowire.Car" p:brand="Audi" p:price="200000"></bean>    <bean id="car1" class="com.spring.test.autowire.Car" p:brand="Fute" p:price="300000"></bean>    <!-- 可以使用autowire属性指定自动装配的方式,        byName 根据 bean 的名字和当前 bean 的 setter 风格的属性名进行自动装配,若有匹配,则自动装配,若没有匹配的,则不装配        byType 根据 bean 的名字和当前 bean 的属性类型进行自动装配,若IOC容器中有一个以上该类型匹配的bean,则抛出异常        constructor 使用构造方法完成对象注入,其实也是根据构造方法的参数类型进行对象查找,相当于采用byType的方式。        autodetect 自动选择:如果对象没有无参数的构造方法,那么自动选择constructor的自动装配方式进行构造注入。如果对象含有无参数的构造方法,那么自动选择byType的自动装配方式进行setter注入。                              no 不支持自动装配功能        default 表示默认采用上一级标签的自动装配的取值。如果存在多个配置文件的话,那么每一个配置文件的自动装配方式都是独立的。     -->    <bean id="person" class="com.spring.test.autowire.Person" p:name="Kitty" autowire="byName"></bean></beans>

Main.java

package com.spring.test.autowire;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {    @Test    public void testAutoWire() {        ApplicationContext context = new ClassPathXmlApplicationContext("beans-autowire.xml");        Person person = (Person) context.getBean("person");        System.out.println(person);    }}

Address.java

package com.spring.test.autowire;public class Address {    private String city;    private String street;    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;    }    @Override    public String toString() {        return "Address [city=" + city + ", street=" + street + "]";    }}

Car.java

package com.spring.test.autowire;public class Car {    private String brand;    private double price;    public String getBrand() {        return brand;    }    public void setBrand(String brand) {        this.brand = brand;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    @Override    public String toString() {        return "Car [brand=" + brand + ", price=" + price + "]";    }}

Person.java

package com.spring.test.autowire;public class Person {    private String name;    private Address address;    private Car car;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Address getAddress() {        return address;    }    public void setAddress(Address address) {        this.address = address;    }    public Car getCar() {        return car;    }    public void setCar(Car car) {        this.car = car;    }    @Override    public String toString() {        return "Person [name=" + name + ", address=" + address + ", car=" + car + "]";    }}
0 0
原创粉丝点击