属性注入
属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象
属性注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 <value> 子节点指定属性值
属性注入是实际应用中最常用的注入方式
构造方法注入
通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。
构造器注入在 <constructor-arg> 元素里声明属性, <constructor-arg> 中没有 name 属性
<?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">
<!-- 配置Car, 属性注入(set方法注入) -->
<bean id="car" class="com.learn.spring.beans.Car">
<property name="brand" >
<value>Audi</value>
</property>
<property name="crop" value="yiqi"></property>
<property name="price" value="400000"></property>
</bean>
<!--配置Car,构造器注入
value:指定注入的值
index:指定构造器参数的位置
type:指定构造器参数的类型.
-->
<bean id="car1" class="com.learn.spring.beans.Car">
<constructor-arg value="BMW"></constructor-arg>
<constructor-arg value="500000" index="2" type="double"></constructor-arg>
<constructor-arg value="huachen" index="1"></constructor-arg>
</bean>
<bean id="car2" class="com.learn.spring.beans.Car">
<constructor-arg value="Benz"></constructor-arg>
<constructor-arg value="300" index="2"></constructor-arg>
<constructor-arg value="msds" index="1"></constructor-arg>
</bean>
</beans>
package com.learn.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.learn.spring.beans.Book;
import com.learn.spring.beans.Car;
import com.learn.spring.beans.HelloWorld;
import com.learn.spring.beans.Person;
import com.learn.spring.beans.PersonList;
import com.learn.spring.beans.PersonMap;
public class Main {
public static void main(String[] args) {
//获取Car对象.
Car car = (Car)ctx.getBean("car");
System.out.println(car);
car = (Car)ctx.getBean("car1");
System.out.println(car);
car = (Car)ctx.getBean("car2");
System.out.println(car);
}
}