Spring入门学习(自动装配) 第四节

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011171125/article/details/85223781

Spring入门学习 第四节

自动装配

  1. 分别创建三个类Address.javaCar.javaPerson.java
    其中Perosn类包含有Address和Car的属性
    package com.fafa.spring.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 + "]";
    	}
    }
    
    package com.fafa.spring.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 + "]";
    	}
    }
    
    package com.fafa.spring.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
    				+ "]";
    	}
    }
    
  2. 创建相应的bean配置文件beans-autowire.xml
    <bean id="address" class="com.fafa.spring.autowire.Address" 
    	p:city="NanJing" p:street="QiXiaQu"></bean>
    	
    <!-- <bean id="address2" class="com.fafa.spring.autowire.Address" 
    	p:city="Dao" p:street="XuanWuQu"></bean> -->
    
    <bean id="car" class="com.fafa.spring.autowire.Car"
    	p:brand="Audi" p:price="300000"></bean>
    
    在之前是通过bean的引用来给属性赋值,现在可以使用自动装配的方式直接赋值。
    <!-- 通过ref引用来赋值的 -->
    <bean id="person" class="com.fafa.spring.autowire.Person"
    	p:name="Tom" p:address-ref="address" p:car-ref="car"></bean>
    
    Autowire可以byNamebyType进行自动装配
    byName根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的则进行自动装配,若没有匹配的则不装配
    byType根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有一个以上的类型匹配的bean,则抛出异常
    <!-- 
    	可以使用autowire 属性指定自动装配的方式,
    	byName根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的则进行自动装配,若没有匹配的则不装配
    	byType根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有一个以上的类型匹配的bean,则抛出异常
    -->
    <bean id="person" class="com.fafa.spring.autowire.Person"
    	p:name="Tom" autowire="byType"></bean>
    
  3. 测试:
    测试方法:
    @Test
    public void testPerson(){
    	ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:beans-autowire.xml");
    	Person person = (Person) ctx.getBean("person");
    	System.out.println(person);
    }
    
    测试结果:
    Person [name=Tom, address=Address [city=NanJing, street=QiXiaQu], car=Car [brand=Audi, price=300000.0]]
    

猜你喜欢

转载自blog.csdn.net/u011171125/article/details/85223781