Начиная с узла 7.6 , вы можете объединить функцию promisify
из модуля utils с setTimeout
.
const sleep = require('util').promisify(setTimeout)
async function main() {
console.time("Slept for")
await sleep(3000)
console.timeEnd("Slept for")
}
main()
async function asyncGenerator() {
while (goOn) {
var fileList = await listFiles(nextPageToken);
await sleep(3000)
var parents = await requestParents(fileList);
}
}
Вы можете использовать существующий контекст в качестве родительского контекста для других контекстов, хотя я сомневаюсь, что вы могли бы заменить существующий WebApplicationContext.
Если вы используете упаковку EAR - WAR, вы получите это -of-the-box (вроде) путем загрузки контекста приложения из EAR и последующего добавления его в WAR.
Не уверен, применимо ли это в вашей ситуации.
Я бы хотел позволить Spring инициализировать ваши bean-компоненты, если они сочтут нужным - в порядке их объявленных зависимостей.
Если вам нужна миграция базы данных, есть несколько шаблонов для их запуска в первую очередь:
Преимущество очевидное: простота.
Может ли отложенная инициализация быть альтернативой тому, чего вы пытаетесь достичь?
вы можете преобразовать контекст WebApplicatonContext в ConfigurableWebApplicationContext затем используйте метод setConfigurations.
не забудьте обновить;
Была та же задача, и я создал два контекста: startUpContext.xml
и applicationContext.xml
. В startUpContext.xml
есть компонент, запускающий загрузку appliationContext.xml
. (расположение контекста приложения настраивается в startUpContext.xml
как свойство триггера). И, наконец, триггер заменяет местоположения текущего контекста и обновляет его:
applicationContext.setConfigLocations(locations);
applicationContext.refresh();
(startUpContext.xml загружается с помощью стандартного прослушивателя загрузчика контекста Spring)