spring:注入属性的值

## 1 注入属性的值(重要)

### 1.1 基本概念

以某个`User`类为例:

public class User {

public String name;

}

如果在Spring的配置文件中进行配置,可以使得加载Spring配置文件时,就创建出它的对象,在此基础之上,还可以通过配置,使得该类中的`name`属性(也可以是其它属性)具有值,最终,在程序运行时,如果获取`User`的对象,其中的`name`属性是已经被赋值的!

### 1.2 通过SET方法注入(重要)

首先,需要为类中的属性(需要被注入的值属性)添加SET方法,可以通过Eclipse工具自动生成属性的SET方法,例如:

public class User {

public String name;

public void setName(String name) {
this.name = name;
}

}

然后,在Spring的配置文件中,将`<bean>`节点写成成对的标签,并添加`<property>`子节点:

<!-- property节点:用于注入属性的值 -->
<!-- name:属性名 -->
<!-- value:属性值 -->
<bean id="user"
class="cn.tedu.spring.entity.User">
<property name="name" value="David" />
</bean>

如果有多个属性需要注入值,则每个属性都需要有SET方法,并且,在`<bean>`下使用多个`<property>`节点进行配置。

注意:在配置`<property>`节点时,其中的`name`属性用于指定属性名,其实,需要指定的是SET方法的名称中除了`set`部分以外的字符,例如在类中的属性名叫`age`,
而SET方法的名称叫`setUserAge`,那么,在配置时,需要配置为`name="userAge"`。也就是说,Spring在工作时,会根据配置文件中的例如`userAge`名称,将首字母改为大写,
并在左侧拼上`set`,得到`setUserAge`作为方法名称,然后调用方法,完成值的注入!不过,这个问题可以不用过多关注,只要保证每个SET/GET方法都是Eclipse这些开发工具生成的名称即可,
因为这些工作生成SET/GET方法时也是使用这样的规则!这样的话,就把`name`属性视为设置的是属性名也可以!

以上做法适用于属性的类型是基本值(基本值:可以直接通过键盘输入的,例如字符串、数值等)的,如果某个属性的值不是基本值可以描述的,例如:

public class User {
public Date regTime;
}

当添加了SET方法以后,在Spring的配置文件中,需要先配置出这个属性值的`<bean>`,然后 ,在注入值时,在`<property>`节点中使用`ref`属性进行配置:

<bean id="user"
class="cn.tedu.spring.entity.User">
<property name="regTime" ref="date" />
</bean>

<bean id="date"
class="java.util.Date" />

### 1.3 通过构造方法注入

 

 

 

 

 

 

 

 

public class UserDao {

public void insert(User user) {
}

}

public class UserService {

public UserDao userDao;

public void reg(User user) {
userDao.insert(user);
}

}

posted @ 2020-07-31 09:28  rearboal  阅读(284)  评论(0编辑  收藏  举报