代码之家  ›  专栏  ›  技术社区  ›  Julian Lettner

Spring:通过构造函数注入静态成员(system.in)

  •  3
  • Julian Lettner  · 技术社区  · 15 年前

    我为一个简单的应用程序编写了某种控制台客户端。 为了更灵活些,我想只依靠 java.io.Input-/OutputStream ,而不是访问 System.in/out 直接。

    我改名了班级 ConsoleClient StreamClient ,添加了setter并确保使用实例字段而不是 系统输入/输出 .

    目前,我的客户机代码如下:

    ApplicationContext appCtx = new ClassPathXmlApplicationContext("...");
    StreamClient cc = (StreamClient) appCtx.getBean("streamClient");
    cc.setInputStream(System.in);
    cc.setOutputStream(System.out);
    cc.run();   // start client
    

    问题:

    是否有方法将3号和4号线移动到弹簧配置中(最好是构造函数注入)?

    谢谢你的时间。

    2 回复  |  直到 15 年前
        1
  •  5
  •   axtavt    15 年前

    使用 <util:constant ... /> :

    <util:constant id = "out" static-field="java.lang.System.out" />
    
        2
  •  0
  •   Brian Agnew    15 年前

    我不确定您是否可以使用 System.out (我想这是你的要求)。但是,您可以创建一个使用工厂类/方法返回对象的bean(在本例中 系统输出 )

    <bean id="streamOut" class="examples.StreamFactory"
          factory-method="getSystemOut"/>