我嘗試過使用方式。
@Value("${app.host})
@AutoWired
Environment environment
我可以從其他檔案中的application.properties獲取值,但是當我嘗試從實作 Callable Interface 的執行緒任務中獲取它時,我得到的值為 null。
這里是我的application.properties
app.host = "xyz.com"
服務
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<FTPClient> result = executorService.submit(new FtpConnector());
FtpConnector.java
import java.util.concurrent.Callable;
@Service
@PropertySource("classpath:application.properties")
public class FtpConnector implements Callable<FTPClient>{
FTPClient ftpClient = new FTPClient();
Logger logger = LoggerFactory.getLogger(FtpConnector.class);
@Autowired
FtpClient client;
@Value("${app.host}")
private String host;
@Override
public FTPClient call() throws Exception {
logger.info("Host from connecter {}",host);
}
輸出
2022-03-02 20:44:03.831 INFO 15135 --- [ool-13-thread-1] t.a.tech.ftpnew.service.FtpConnector : Host from connecter null
有沒有人有任何想法或解決方案來獲取執行緒中 application.properties 的值。?
uj5u.com熱心網友回復:
當您使用new FtpConnector()它時,它不會執行任何依賴注入,因此FtpClient不會host被注入。請執行下列操作;
@Autowired
private FtpConnector ftpConnector;
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<FTPClient> result = executorService.submit(ftpConnector);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436321.html
