3.3 将HelloWorld实例改为构造注入方式实现

来源:互联网 发布:java 判断什么浏览器 编辑:程序博客网 时间:2024/05/16 17:46

 

3.3  将HelloWorld实例改为构造注入方式实现

Spring支持Set注入(setter injection)和构造注入(constructor injection),但更推荐使用Set注入。上面讲过,第2章的第一个实现HelloWorld的实例就是采用Set注入方式实现的,读者可以参看第2章的实例。下面笔者把这个实例改为采用构造注入方式实现。改写思路是:首先修改类HelloWorld,在该类中增加一个构造方法,然后修改Spring的配置文档config.xml,最后编写测试程序TestHelloWorld.java。

3.3.1  修改HelloWorld.java

修改com.gc.action包下的HelloWorld.java,增加一个构造方法,并把要注入的字符串msg作为参数,代码如下,在HelloWorld类中增加了一个构造方法public HelloWorld (String msg)。

//*******HelloWorld.java**************

package com.gc.action;

public class HelloWorld {

         //该变量用来存储字符串

         public String msg = null;

         //增加了一个构造方法

         public HelloWorld (String msg) {

                   this.msg = msg;

         }       

         //设定变量msg的set方法

         public void setMsg(String msg) {

                   this.msg = msg;

         }

         //获取变量msg的get方法

         public String getMsg() {

                   return this.msg;

         }

}

3.3.2  修改config.xml

在Spring中,利用Set注入和构造注入时,在XML配置文档中使用的语法是不一样的。修改配置文件config.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

 "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <!--定义一个Bean,通过构造函数进行注入-->

  <bean id="HelloWorld" class="com.gc.action.HelloWorld">

      <!--通过构造函数进行注入-->

      <constructor-arg index="0">

          <value>HelloWorld</value>

      </constructor-arg>

  </bean>

</beans>

代码说明:

  ●       constructor-arg,用来表示是通过构造方式来注入参数的。

  ●       index="0",表示是构造方法中的第一个参数,如果只有一个参数,则可以不用设置这个属性值。

3.3.3  编写测试程序TestHelloWorld.java

修改TestHelloWorld.java,代码如下:

//******* TestHelloWorld.java**************

package com.gc.test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.gc.action.HelloWorld;

public class TestHelloWorld {

         public static void main(String[ ] args) {

              //通过ApplicationContext来获取Spring的配置文件

                   ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");

                   HelloWorld HelloWorld = (HelloWorld) actx.getBean("HelloWorld");

                   System.out.println(HelloWorld.getMsg());

    }

}

3.3.4  运行测试程序并查看输出结果

在Eclipse中运行Java程序的步骤如下:

(1)确保当前在Eclipse中编辑的是TestHelloWorld.java文件。

(2)选择Run→Run As→Java Application命令,Eclipse即可运行TestHelloWorld.java。

(3)输出结果为“HelloWorld”,如图3.1所示。

图3.1  输出结果为“HelloWorld”

原创粉丝点击