Это не сработает так, как вы это видите.Такое sftpSessionFactory
<bean>
будет создано только один раз во время запуска приложения, и эти значения свойств, подобные SpEL, не приносят никакого значения на этом этапе: просто нет сообщений для взаимодействия.Пожалуйста, узнайте, что такое bean-компоненты в Spring и как они инициализируются: https://docs.spring.io/spring/docs/5.1.5.RELEASE/spring-framework-reference/core.html#spring-core
Единственное решение для вашего варианта использования на основе заголовков может быть выполнено через DelegatingSessionFactory
и пользовательские SessionFactoryLocator
, где вы создаетеэкземпляр DefaultSftpSessionFactory
на лету.Конечно, вы можете кэшировать их там, потому что разные сообщения могут содержать одинаковые значения свойств в своих заголовках.Не забудьте сохранить key
в ThreadLocal
:
/**
* Set a key to be used for {@link #getSession()} on this thread.
* @param key the key.
*/
public void setThreadKey(Object key) {
this.threadKey.set(key);
}
В противном случае DelegatingSessionFactory
не будет работать.
См. Дополнительную информацию в Документах: https://docs.spring.io/spring-integration/docs/current/reference/html/#sftp-dsf