java - Spring DI : Injection of FileInputStream in Constructor using annotation

标签 java spring spring-mvc dependency-injection

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

@Component
public class MyClass{

    private BlaClass xy;


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

}

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

@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 配置工作,但我想使用注释来完成它,因为它不太冗长。

最佳答案

您可以像这样使用资源

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

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

关于java - Spring DI : Injection of FileInputStream in Constructor using annotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469679/

相关文章:

java - HQL : Distance calculation between two locations?

spring - 将 bean.jar 添加到 WEB-INF/lib 后出现 org.apache.catalina.LifecycleException

java - 当我将 'extends MultiActionController' 添加到 Controller 类名时无法使用 @RequestMapping

java - 为什么这个耳机检测代码会执行两次?

java - 无法使用 Runnable

java - 是否可以降低加密级别以避免错误: Unable to initialize due to invalid secret key

java - 基于 Action 的验证最佳实践 Spring MVC

java - Spring MVC NoSuchMethodError 错误

java - 有关 github 上此幻灯片菜单库的更多信息

java - 在 Spring RedisTemplate 中使用 TTL 的 Redis MSET