当前位置:网站首页 > Java基础 > 正文

属性注入java教程

所谓 Bean 属性注入,简单点说就是将属性注入到 Bean 中的过程,而这属性既可以普通属性,也可以是一个对象(Bean)。

Spring 主要通过以下 2 种方式实现属性注入:



    <li> 构造函数注入</li> <li> setter 注入(又称设值注入)</li> 

    我们可以通过 Bean 的带参构造函数,以实现 Bean 的属性注入。

    使用构造函数实现属性注入大致步骤如下:

      <li> 在 Bean 中添加一个有参构造函数,构造函数内的每一个参数代表一个需要注入的属性;</li> <li> 在 Spring 的&nbsp;XML 配置文件中,通过 &lt;beans&gt; 及其子元素 &lt;bean&gt; 对 Bean 进行定义;</li> <li> 在 &lt;bean&gt; 元素内使用&nbsp;&lt;constructor-arg&gt; 元素,对构造函数内的属性进行赋值,Bean 的构造函数内有多少参数,就需要使用多少个 &lt;constructor-arg&gt; 元素。</li> 

      示例 1</h4> 

      下面我们就通过一个实例,来演示下如何构造函数注入的方式实现属性注入。


      1. 新建一个名为 my-spring-demo 的 Java 项目,并在 src 下创建一个名为 net.biancheng.c 的包。


      2. 参考《第一个Spring程序》,向项目中导入所需的 Jar 包。


      3. 在 net.biancheng.c 包下,创建一个名为 Grade 的类,代码如下。
      1. 在 src 目录下创建 Spring 配置文件 Beans.xml,配置如下。

      我们可以通过 Bean 的 setter 方法,将属性值注入到 Bean 的属性中。

      在 Spring 实例化 Bean 的过程中,IoC 容器首先会调用默认的构造方法(无参构造方法)实例化 Bean(Java 对象),然后通过 Java 的反射机制调用这个 Bean 的 setXxx() 方法,将属性值注入到 Bean 中。

      使用 setter 注入的方式进行属性注入,大致步骤如下:



        <li> 在 Bean 中提供一个默认的无参构造函数(在没有其他带参构造函数的情况下,可省略),并为所有需要注入的属性提供一个 setXxx() 方法;</li> <li> 在 Spring 的&nbsp;XML 配置文件中,使用 &lt;beans&gt; 及其子元素 &lt;bean&gt; 对 Bean 进行定义;</li> <li> 在 &lt;bean&gt; 元素内使用&nbsp; &lt;property&gt; 元素对各个属性进行赋值。</li> 

        示例 2</h4> 

        下面,我们就通过一个实例,来演示如何通过 setter 注入的方式实现属性注入,步骤如下。


        1. 在 net.biancheng.c 包下,修改 Student 类的代码。
        1. 在 src 目录下,修改配置文件 Beans.xml 的内容。
        1. 执行&nbsp;MainApp 中的 main() 方法,控制台输出如下。

        我们在通过构造函数或 setter 方法进行属性注入时,通常是在 &lt;bean&gt; 元素中嵌套 &lt;property&gt; 和 &lt;constructor-arg&gt; 元素来实现的。这种方式虽然结构清晰,但书写较繁琐。

        Spring 框架提供了 2 种短命名空间,可以简化 Spring 的 XML 配置,如下表。





        <tbody> <tr> <th> 短命名空间</th> <th> 简化的 XML 配置</th> <th> 说明</th> </tr> <tr> <td> p 命名空间</td> <td> &lt;bean&gt; 元素中嵌套的&nbsp;&lt;property&gt; 元素</td> <td> 是 setter 方式属性注入的一种快捷实现方式</td> </tr> <tr> <td> c 命名空间</td> <td> &lt;bean&gt; 元素中嵌套的 &lt;constructor&gt; 元素</td> <td> 是构造函数属性注入的一种快捷实现方式</td> </tr> </tbody> 

        p 命名空间注入</h4> 

        p 命名空间是 setter 方式属性注入的一种快捷实现方式。通过它,我们能够以 bean 属性的形式实现 setter 方式的属性注入,而不再使用嵌套的 &lt;property&gt; 元素,以实现简化 Spring 的 XML 配置的目的。

        首先我们需要在配置文件的 &lt;beans&gt; 元素中导入以下 XML 约束。



        在导入 XML 约束后,我们就能通过以下形式实现属性注入。


        使用 p 命名空间注入依赖时,必须注意以下 3 点:

          <li> Java 类中必须有 setter 方法;</li> <li> Java 类中必须有无参构造器(类中不包含任何带参构造函数的情况,无参构造函数默认存在);</li> <li> 在使用 p 命名空间实现属性注入前,XML 配置的 &lt;beans&gt; 元素内必须先导入 p 命名空间的 XML 约束。</li> 

          示例</h4> 

          下面我们通过一个简单的实例,演示下如何通过 p 命名空间实现属性注入。


          1. 参考《第一个 Spring程序》,新建一个名为 my-spring-demo6 的 Java 项目。


          2. 在 net.biancheng.c 包中,创建一个名为 Dept 的类,代码如下。
          1. 在 net.biancheng.c 包下,创建一个名为&nbsp;Employee 的类,代码如下。
          1. 在 net.biancheng.c 包下,创建一个名为 MainApp 的类,代码如下。

          c 命名空间注入</h4> 

          c 命名空间是构造函数注入的一种快捷实现方式。通过它,我们能够以 &lt;bean&gt; 属性的形式实现构造函数方式的属性注入,而不再使用嵌套的 &lt;constructor-arg&gt; 元素,以实现简化 Spring 的 XML 配置的目的。

          首先我们需要在配置文件的 &lt;beans&gt; 元素中导入以下 XML 约束。


          使用 c 命名空间注入依赖时,必须注意以下 2 点:

            <li> Java 类中必须包含对应的带参构造器;</li> <li> 在使用 c 命名空间实现属性注入前,XML 配置的 &lt;beans&gt; 元素内必须先导入 c 命名空间的 XML 约束。</li> 

            示例</h4> 

            下面我们通过一个简单的实例,演示下如何通过 c 命名空间实现属性注入。


            1. 修改 Dept 中的代码,添加一个有参构造函数。
            1. 修改 Beans.xml 中的配置,使用 c 命名空间实现属性注入。
            1. 重新执行&nbsp;MainApp 中的 main() 方法,控制台输出如下。

          • 上一篇: java中webapi教程
          • 下一篇: java新人 教程
          • 版权声明


            相关文章:

          • java中webapi教程2025-11-18 16:34:01
          • java se安装教程2025-11-18 16:34:01
          • java706教程2025-11-18 16:34:01
          • 菜鸟教程java安装2025-11-18 16:34:01
          • 铁轨机教程java2025-11-18 16:34:01
          • java新人 教程2025-11-18 16:34:01
          • java画月亮教程2025-11-18 16:34:01
          • 郝斌java视频教程2025-11-18 16:34:01
          • java 写游戏教程2025-11-18 16:34:01
          • java安装教程 window2025-11-18 16:34:01