依赖注入:
依赖于某些方式给Bean的资源进行注入
Spring 支持三种依赖注入的方式
- 属性注入
- 构造器注入
- 工厂方法注入
少用、不推荐
一. 属性注入:
- 使用setter方法
laishuai.setAge(12);
- 通过IOC的配置文件
<property name="name" value="LaiShuai"></property>
//或者通过
<property name="name">
< value>value值</value>
</property>
二. 构造器注入:
在xml中:默认为构造器属性顺序进行注入,也可以用index对属性进行顺序标注,type指定数据类型
//需要根据构造方法的属性顺序依次赋值
<bean id="persion" class="com.laishuai.bean.Persion">
<constructor-arg value="二狗子" ></constructor-arg>
<constructor-arg value="22"></constructor-arg>
</bean>
//也可以使用index指定属性的顺序,index从0开始
<bean id="persion" class="com.laishuai.bean.Persion" >
<constructor-arg value="二狗子" index=0></constructor-arg>
<constructor-arg value="22"></constructor-arg>
</bean>
//使用时间序列标志
<bean id="persion" class="com.laishuai.bean.Persion">
<constructor-arg value="二狗子" type=“java.lang.String”></constructor-arg>
<constructor-arg value="22" type=int“”></constructor-arg>
</bean>
字面值:
- 可以用字符串表示的值,可以通过<value>元素标签或 value1属性进行注入
- 基本数据类型及其封装类、String等类型都可以使用字面值注入的方式
- 若字面值包含特殊字符,可以使<![ADATA]>把字面值包裹起来。
//只能使用value标签进行赋值,不能使用value属性
<bean id="persion" class="com.laishuai.bean.Persion">
<property name="name">
<value>陈二狗<![CDATA[?]]></value>
</property>
<property name="age">
<value>22</value>
</property>
</bean>
引用Bean
省略getter()、setter()方法
package com.laishuai.bean;
public class Persion {
public String name;
public int age;
public Car car;
@Override
public String toString() {
return "Persion{" +
"name='" + name + '\'' +
", age=" + age +
", car=" + car +
'}';
}
}
package com.laishuai.bean;
public class Car {
private String name;
private double lenght;
private double width;
public Car(String name, double lenght, double width) {
this.name = name;
this.lenght = lenght;
this.width = width;
}
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", lenght=" + lenght +
", width=" + width +
'}';
}
}
<bean id="car0" class="com.laishuai.bean.Car">
<constructor-arg value="宝马"></constructor-arg>
<constructor-arg value="4"></constructor-arg>
<constructor-arg value="4"></constructor-arg>
</bean>
<bean id="persion3" class="com.laishuai.bean.Persion">
<property name="name" value="二狗子"></property>
<property name="age" value="22"></property>
<property name="car">
<ref bean="car0"></ref>
</property>
</bean>
内部Bean
此处 car0 被称为内部Bean
<bean id="persion3" class="com.laishuai.bean.Persion">
<property name="name" value="二狗子"></property>
<property name="age" value="22"></property>
<property name="car">
<!--<ref bean="car0"></ref>-->
<bean id="car0" class="com.laishuai.bean.Car">
<constructor-arg value="宝马X6"></constructor-arg>
<constructor-arg value="4"></constructor-arg>
<constructor-arg value="4"></constructor-arg>
</bean>
</property>
</bean>
可以使用<null> 给Bean的字符串或其他对象类型的属性注入 null 值
网友评论