@Async注解是異步處理,也就是說,當你調用這個方法的時候,它會立即返回,而不會等待方法執行完畢。
而MultipartFile是spring提供的文件上傳類,它的實現是基于流的,也就是說,當你調用它的getInputStream()方法的時候,它會返回一個InputStream,你可以通過這個InputStream來讀取文件的內容。
而@Async注解是異步處理,也就是說,當你調用這個方法的時候,它會立即返回,而不會等待方法執行完畢。
這就導致了一個問題,當你調用getInputStream()方法的時候,它會返回一個InputStream,但是由于@Async注解的存在,它會立即返回,而不會等待方法執行完畢,這就導致了InputStream還沒有被初始化,所以當你嘗試讀取InputStream的時候,就會報FileNotFoundException異常。
解決辦法:
1、可以將@Async注解去掉,這樣就可以保證InputStream被正確的初始化,從而避免報錯。
2、可以使用Future來處理,Future是java提供的一種異步處理機制,可以通過Future來保證InputStream被正確的初始化,從而避免報錯。