zoukankan      html  css  js  c++  java
  • 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);
    }

    }

  • 相关阅读:
    C数据结构2.1-线性表抽象数据类型
    转载的内容
    转载springboot的内容
    jQuery中的load()Failed to load resource: the server responded with a status of 404 Maven框架遇到的问题
    java代码发送邮箱源代码
    Error:(1, 10) java: 需要class, interface或enum的错误
    性能测试系列五 压测常见的关注指标以及监控分析工具
    面试官常考的Selenium Web自动化面试题总结(上篇)
    性能测试系列四 压测指标的来源
    性能测试系列三 压测方式简单总结
  • 原文地址:https://www.cnblogs.com/lwh-12345/p/13407894.html
Copyright © 2011-2022 走看看