繁体   English   中英

Springboot 如何将非字符串值注入属性?

[英]Springboot How can I inject a non-String value to a property?

我正在尝试将 Path object 注入属性。 但是,似乎我只能将 String 注入属性。 所以我尝试使用下面的代码来启动路径属性,但失败了。 谁能建议我怎么做?

@Service
public class FilesStorageServiceImpl implements FilesStorageService {

  @Value("${upload.path}")
  private String rootPath;

  private Path root = Path.get(this.rootPath)

  public void doSomething() {
    Files.copy(....)
  }
}

当我调试它时,它告诉我根是 null。 似乎没有启动根路径。

这取决于服务变量初始化的方式和时间。 轻松修复,通过设置器注入:

@Service
public class FilesStorageServiceImpl implements FilesStorageService {

  private String rootPath;

  private Path root;

  @Value("${upload.path}")
  public setRootPath(String rootPath) {
    this.rootPath = rootPath;
    root = Path.get(this.rootPath)
  }

  public void doSomething() {
    Files.copy(....)
  }
}

使用 setter 进行值注入,可以更好地控制root变量的初始化。

注入整个object? 可能不是您想要的东西,因为不值得花精力弄清楚您将如何序列化、反序列化,然后注入 object。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM