簡體   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