1、通过构造器注入字面常量值
定义一个Person类
public class Person {
private String name;
private int age;
private String sex;
public Person(String name, int age, String sex, Car car) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
}
在spring的xml文件中进行装配,配置如下:
<bean id="person" class="com.lzj.spring.Person">
<constructor-arg value="lzj" type="java.lang.String"></constructor-arg>
<constructor-arg value="20" type="int"></constructor-arg>
<constructor-arg value="female" index="2"></constructor-arg>
</bean>
当然也可配置成如下形式:
<bean id="person" class="com.lzj.spring.Person">
<constructor-arg value="lzj" type="java.lang.String"></constructor-arg>
<constructor-arg value="20" type="int"></constructor-arg>
<!--把value配置成constructor-arg的一个字标签,property也可以如此配置-->
<constructor-arg index="2">
<value>female</value>
</constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
2、注入字面值含有特殊字符的bean
若要给sex属性注入一个<female>
值,由于”<”和”>”都是特殊字符,所以需要如下方式进入注入
<bean id="person" class="com.lzj.spring.Person">
<constructor-arg value="lzj" type="java.lang.String"></constructor-arg>
<constructor-arg value="20" type="int"></constructor-arg>
<constructor-arg index="2">
<!--若字面值含有特殊字符,用<![CDATA[]]>进行注入-->
<value type="java.lang.String"><![CDATA[<female>]]></value>
</constructor-arg>
</bean>
3、引用其它的bean
创建一个Car类,让Person引用
public class Car {
private String brand;
private float price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", price=" + price + "]";
}
}
public class Person {
private String name;
private int age;
private String sex;
private Car car;
public Person(String name, int age, String sex, Car car) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.car = car;
}
}
spring的xml配置如下:
<bean id="car" class="com.lzj.spring.Car">
<property name="brand" value="baoma"></property>
<property name="price" value="100000"></property>
</bean>
<bean id="person" class="com.lzj.spring.Person">
<constructor-arg value="lzj" type="java.lang.String"></constructor-arg>
<constructor-arg value="20" type="int"></constructor-arg>
<constructor-arg index="2">
<value type="java.lang.String"><![CDATA[<female>]]></value>
</constructor-arg>
<!--第一个car为person的属性,第二个car为id为car的bean-->
<constructor-arg name="car" ref="car"></constructor-arg>
<!--可以简写为下面的配置
<constructor-arg ref="car"></constructor-arg>
-->
</bean>
4、内部Bean
上面为提前创建一个bean,然后让让其它bean进行引用,也可以直接bean的内部进行引用。
<bean id="person" class="com.lzj.spring.Person">
<constructor-arg value="lzj" type="java.lang.String"></constructor-arg>
<constructor-arg value="20" type="int"></constructor-arg>
<constructor-arg index="2">
<value type="java.lang.String"><![CDATA[<female>]]></value>
</constructor-arg>
<!--直接在bean的内部创建一个bean-->
<constructor-arg name="car">
<bean id="car1" class="com.lzj.spring.Car">
<property name="brand" value="baoma"></property>
<property name="price" value="100000"></property>
</bean>
</constructor-arg>
</bean>
未完