方式一:构造方法方式的属性注入
第一步:给类提供有参构造方法
public class User {
private String name;//姓名
private String sex;//性别
public User(String name, String sex) {
this.name = name;
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
第二步:在配置文件中注入属性
<bean id="user" class="com.ctbu.domain.User">
<constructor-arg name="name" value="黎明"/>
<constructor-arg name="sex" value="34"/>
</bean>
方式二:使用set方法进行注入
第一步:给实体类属性提供set方法
public class User {
private String name;//姓名
private String sex;//性别
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public User(String name, String sex) {
this.name = name;
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
第二步:在配置文件中注入属性
<bean id="User" class="com.ctbu.domain.User">
<property name="name" value="锤子哥"/>
<property name="sex" value="35"/>
</bean>
方式三:使用set方法注入对象类型的属性(注意:两个类都要交给spring管理才能成功注入)
第一步:给主体类设置好属性并提供方法
public class User {
private String name;//姓名
private String sex;//性别
private Dog dog;//狗狗
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", dog=" + dog +
'}';
}
}
第二步:给次级类设定属性并提供set方法
public class Dog {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", color='" + color + '\'' +
'}';
}
}
第三步:将两个类都交给spring管理,并注入属性
<bean id="User" class="com.ctbu.domain.User">
<property name="name" value="锤子哥"/>
<property name="sex" value="35"/>
<property name="dog" ref="Dog"/>
</bean>
<bean id="Dog" class="com.ctbu.domain.Dog">
<property name="name" value="哈士奇"/>
<property name="color" value="黑白色"/>
</bean>
方式四:p名称空间注入(属性还是要提供set方法)
第一步:引入p名称空间约束
xmlns:p="http://www.springframework.org/schema/p"
第二步:使用p名称空间斤进行注入
<bean id="User" class="com.ctbu.domain.User" p:name="小红" p:sex="45" p:dog-ref="Dog"/>
<bean id="Dog" class="com.ctbu.domain.Dog" p:name="埃拉斯基" p:color="红色"/>
方式五:spEL表达式注入
<bean id="User" class="com.ctbu.domain.User">
<property name="name" value="#{'李伟'}"/>
<property name="sex" value="#{'455'}"/>
<property name="dog" value="#{Dog}"/>
</bean>
<bean id="Dog" class="com.ctbu.domain.Dog">
<property name="name" value="#{'萨摩耶'}"/>
<property name="color" value="#{'黑色'}"/>
</bean>
方式六:集合属性类型的注入
1:数组
第一步:在实体类中建立一个数组类型的属性
public class User {
private String name;//姓名
private String[] house;//房子
public void setName(String name) {
this.name = name;
}
public void setHouse(String[] house) {
this.house = house;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", house=" + Arrays.toString(house) +
'}';
}
}
第二步:在配置文件中配置数组属性注入
<bean id="User" class="com.ctbu.domain.User">
<property name="name" value="#{'李伟'}"/>
<property name="house">
<list>
<value>别墅</value>
<value>古堡</value>
<value>洋房</value>
<value>大厦</value>
</list>
</property>
</bean>
2:List集合
第一步:创建一个list集合类型的属性
public class User {
private String name;//姓名
private List car;//汽车
public void setName(String name) {
this.name = name;
}
public void setCar(List car) {
this.car = car;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", car=" + car +
'}';
}
}
第二步:在配置文件中配置属性注入
<bean id="User" class="com.ctbu.domain.User">
<property name="name" value="#{'李伟'}"/>
<property name="car">
<list>
<value>兰博基尼</value>
<value>布加迪</value>
<value>保时捷</value>
<value>五菱宏光</value>
</list>
</property>
</bean>
3:Set集合
第一步:实体类创建set类型的属性
public class User {
private String name;//姓名
private Set car;//汽车
public void setName(String name) {
this.name = name;
}
public void setCar(Set car) {
this.car = car;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", car=" + car +
'}';
}
}
第二步:配置文件属性注入
<bean id="User" class="com.ctbu.domain.User">
<property name="name" value="#{'李伟'}"/>
<property name="car">
<set>
<value>兰博基尼</value>
<value>布加迪</value>
<value>保时捷</value>
<value>五菱宏光</value>
</set>
</property>
</bean>
4:Map集合
第一步:在实体类中建立map类型的属性
public class User {
private Map man;
public void setMan(Map man) {
this.man = man;
}
@Override
public String toString() {
return "User{" +
"man=" + man +
'}';
}
}
第二步:在配置文件中配置属性注入
<bean id="User" class="com.ctbu.domain.User">
<property name="man">
<map>
<entry key="小红" value="女"/>
<entry key="李白" value="男"/>
<entry key="松江" value="男"/>
</map>
</property>
</bean>