java - Springframework 构造函数参数

标签 java spring dependency-injection constructor-injection

我有一个 MainClass,它有 2 个变量。我想将这两个值传递给 springframework bean 类“Test”。我如何在 applicationContext.xml 中定义它,以及如何将这两个变量值传递给 bean“Test”。

例如:

class MainClass {
       public int var1;
      public int var2;
      public Test test;

   public void setVar1(int var11) {
    var1 = var11;
   }

    public void setVar2(int var22) {
        var2 = var22;
    }

   public static void main(String args[]) {

       ApplicationContext context = 
           new FileSystemXmlApplicationContext("applicationContext.xml");
      Test = context.getBean("test");
   }
  }

------------ 测试类------------

public class Test {

 public Test (int var1, int var2) {}
}

------------ applicationContext.xml ------------

   <bean id="test" class="com.path.test">
       <constructor-arg index="0" type="int" value="????"/>
       <constructor-arg index="1" type="int" value="????"/>
   </bean>

最佳答案

你可以像这样传递值:

<bean id="test" class="com.path.test.Test">
   <constructor-arg index="0" type="int" value="123"/>
   <constructor-arg index="1" type="int" value="456"/>
</bean>

您应该记住将您的完全限定类名作为 class 属性的值。

就是说,您的 Test 类没有保持其状态。如果您想获取您在 applicationContext.xml 中指定的值,您应该创建一些 Test 成员:

public class Test {
    private int v1;
    private int v2;

    public Test (int var1, int var2) {v1 = var1; v2 = var2;}

    public int getVOne() {
        return v1;
    }

    public int getVTwo() {
        return v2;
    }
}

然后您应该能够像这样在您的 main 方法中访问它们:

public static void main(String args[]) {

    ApplicationContext context = 
       new FileSystemXmlApplicationContext("applicationContext.xml");
    Test test = context.getBean("test");
    int v1 = test.getVOne();
    int v2 = test.getVTwo();

    System.out.println("V1: " + v1 + " V2: " + v2); //output: V1: 123 V2: 456
}

关于java - Springframework 构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602205/

相关文章:

logging - 依赖注入(inject)和日志接口(interface)

java - Unresolved 类 MainActivity

java - A 类中的构造函数 A 不能应用于给定类型;

java - 如何在 spring mvc 中使用 HandlerInterceptorAdapter 手动处理 session 超时

java - 仅验证选定的其余端点 : spring boot

scala - 无法使用 macwire 注入(inject) Play WS 或 WSClient

wcf - 使用 WCF 代理的依赖注入(inject)

java - 从 Activity 连接 Fragment

java - Spark 蓄能器复位

java - 一对一多列外键的断列映射