在做項目的時候突然有這樣一個需求,在工具類中需要注入spring組件,由于工具類都是靜態(tài)的直接注入或者new一個類都是不行的,因此了解了一下相關(guān)用法.
方案
首先需要將該類變成一個spring的bean,也就是在類上添加@Component注解,當(dāng)然其他相關(guān)注解也可以
在類中聲明一個該類的靜態(tài)對象,同時也將需要注入的bean注入進(jìn)來.
寫一個init()方法并在上面添加@PostConstruct注解,在方法中將this賦給該類的靜態(tài)對象,并且使用將依賴bean賦給靜態(tài)對象的bean
使用的時候使用對象.屬性即可
我的項目里是將一個自定義的文件上傳路徑寫在配置文件中,然后在文件工具類中使用它.相關(guān)關(guān)鍵代碼如下
@Component
public class FileUtil {
private static FileUtil fileUtil;
@Autowired
private ProjectProperties projectProperties;
@PostConstruct
public void init() {
fileUtil = this;
fileUtil.projectProperties = this.projectProperties;
}
/**
* 獲取圖片根目錄
*
* @return
*/
public static String getImgBasePath() {
String os = System.getProperty("os.name");
String basePath;
if (os.toLowerCase().startsWith("win")) {
basePath = "D:/projectdev/image/";
} else {
basePath = fileUtil.projectProperties.getFilePathProperties().getBasePath();
}
basePath = basePath.replace("/", SEPERATOR);
return basePath;
}
}
以上就可以實現(xiàn)在靜態(tài)類中注入依賴了.
注:
- 上述測試在ubuntu16.04 lts jdk1.8 spring boot 1.5.6.RELEASE中成功
- 上述文字皆為個人看法,如有錯誤或建議請及時聯(lián)系我