我有一個Web項目,我正在使用Spring集成通過FTP在遠程目錄上進行文件上傳。但是,FTP屬性是動態加載的(來自數據庫),並且它們對於每個請求都可能不同。原始的方法:春季集成上傳與動態FTP屬性
最初創建DefaultFtpSessionFactory
豆:
@Bean
public DefaultFtpSessionFactory defaultFtpSessionFactory() {
return new DefaultFtpSessionFactory();
}
IntegrationFlow
豆:
@Bean
public IntegrationFlow integrationFlow(DefaultFtpSessionFactory defaultFtpSessionFactory) {
// Flow config
}
注入這個bean到控制器和設置屬性:
@Autowired
private DefaultFtpSessionFactory defaultFtpSessionFactory;
@Autowired
private FtpConfigService ftpConfigService;
@RequestMapping(value = "upload", method = RequestMethod.GET)
public RequestEntity<String> upload() {
defaultFtpSessionFactory.setHost(ftpConfigService.getHost());
// Set other properties
// ... and upload file
return new RequestEntity<>(HttpStatus.OK);
}
當然,這由於存在競爭條件(兩個請求者),所以這是一個壞主意sts可以在同一時間訪問DefaultFtpSessionFactory
單身人士)。那麼,我怎樣才能以安全的方式實現這一目標呢?
您可以做的是創建一個消息,其中包含您的ftp負載和會話屬性,您可以使用它更新流中的sessionFactory。 – JEY