2017-03-07 41 views
2

我要注入System.out在X的constuctor:如何注入静态字段的值到构造

@Component 
public class XImpl implements X { 

    PrintStream stream; 

    @Autowired 
    public XImpl(@Qualifier("...")PrintStream stream) { 
    this.stream = stream; 
    } 
} 

你怎么做,与一位资格赛?

回答

0

在XML配置中很简单,使用util:const标签。

在注释配置,你也许能它使用@ValueSpEL结合,像做:

@Value("#{T(java.lang.System).out}") 
0

定义在主类中的bean名称 “系统输出”:

@Bean(name = "sysout") 
public PrintStream getSysOut() { 
    return System.out; 
} 

现在你可以这样注入豆子:

PrintStream stream; 

@Autowired 
public PrinterX(@Qualifier("sysout") PrintStream stream) { 
    this.stream = stream; 
} 

@RequestMapping("test") 
public String test(){ 
    stream.println("This works"); 
    return "tested"; 
} 

这个outp uts“这在工作台中”起作用。