本文主要给大家介绍一下Spring的依赖注入之构造方法注入的几种形式。

首先,建立一个Java类。

public class MyLogger
{
    private String prefix;
    private String message;

    public  MyLogger(){}

    public  MyLogger(String prefix, String message)
    {
        this.prefix = prefix;
        this.message = message;
    }
    public String getPrefix() 
    {
        return prefix;
    }
    public String getMessage() 
    {
        return message;
    }
    public void setPrefix(String string) 
    {
        prefix = string;
    }
    public void setMessage(String string) 
    {
        message = string;
    }
    public void execute(String str) 
    {
        System.out.println((getPrefix() + ", " + getMessage() + ", " + str).toLowerCase());
    }
}

然后,在ApplicationContext.xml中设置id为myLogger的Bean。

<bean id="myLogger" class="com.example.service.MyLogger">
    <constructor-arg index="0">
        <value>INFO</value>
    </constructor-arg>
    <constructor-arg index="1">
        <value>Hello World</value>
    </constructor-arg>
</bean>

最后,做一个测试函数来生成注入bean。

public static void main(String args[]) 
{
    String xml = "file:src/applicationContext.xml";
    ApplicationContext ctx = new ClassPathXmlApplicationContext(xml);

    MyLogger MyLogger=(MyLogger) ctx.getBean("myLogger");
    System.out.println(MyLogger.getPrefix());
    System.out.println(MyLogger.getMessage());

}

另外,构造注入还可以通过参数类型匹配,如下所示:

<bean id="myLogger" class="com.example.service.MyLogger">
    <constructor-arg type="java.lang.String">
        <value>INFO</value>
    </constructor-arg>
    <constructor-arg type="java.lang.String">
        <value>Hello World</value>
    </constructor-arg>
</bean>

除此以外,构造注入可通过参数名传值,如下所示:

<bean id="TheAction6" class="com.example.service.MyLogger">
    <constructor-arg name="prefix" value="INFO">
    </constructor-arg>
    <constructor-arg type="message" value="Hello World">
    </constructor-arg>
</bean>

构造方法注入变化多端,希望大家能够掌握!