3

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

我将类重命名ConsoleClientStreamClient,添加了设置器并确保使用实例字段而不是System.in/out.

目前我的客户端代码如下所示:

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

问题:

有没有办法将第 3 行和第 4 行移到 Spring 配置中(最好是构造函数注入)?

谢谢你的时间。

4

2 回答 2

6

使用<util:constant ... />

<util:constant id = "out" static-field="java.lang.System.out" />
于 2010-03-20T13:17:04.867 回答
0

我不确定您是否可以使用显式创建一个bean System.out(我认为这就是您所要求的)。但是,您可以创建一个使用工厂类/方法返回对象的 bean(在这种情况下System.out

<bean id="streamOut" class="examples.StreamFactory"
      factory-method="getSystemOut"/>
于 2010-03-20T13:07:47.460 回答