我尝试过使用方法。
@Value("${app.host})
@AutoWired
Environment environment
我可以从其他文件中的application.properties中获取值,但是当我尝试从已实现可调用接口(interface)的线程任务中获取它时,我' m 获取值为 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 的值。 ?
最佳答案
当您使用new FtpConnector()
时,它不会执行任何依赖项注入(inject),因此FtpClient
和host
不会被注入(inject)。执行以下操作;
@Autowired
private FtpConnector ftpConnector;
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<FTPClient> result = executorService.submit(ftpConnector);
关于spring - 我无法以任何方式从 Spring Boot 中的 application.properties 获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71325192/