Spring DI:使用注释在Constructor中注入FileInputStream

时间:2014-10-20 15:44:47

标签: java spring spring-mvc dependency-injection

我想使用spring注释注入FileInputStream作为构造函数参数。 假设我有以下类(在进行构造函数arg注入之前)

@Component
public class MyClass{

    private BlaClass xy;


    public MyClass(InputStream is)
    {
     this.xy = new BlaClass(is);
    }

}

所以现在我的问题是我是否可以使用@Value注释或类似注释来注入输入流?应该是这样的:

@Component
public class MyClass{

    private BlaClassTakingAnInputStream xy;

    //this is of course not correct
    public MyClass(@Value("classpath:path/to/a/file") is)
    {
     this.xy = new BlaClassTakingAnInputStream(is);
    }

}

p.s:我知道如何使用xml配置,但我想使用注释,因为它不那么详细。

1 个答案:

答案 0 :(得分:2)

你可以像Resource这样使用

@Autowired
public MyClass(@Value("classpath:path/to/a/file") Resource resource) {
    // access to resource input stream
}

请注意,@Autowired是将此构造函数标记为要使用的构造函数所必需的。否则,Spring会寻找一个无参数的构造函数。