После запуска моего веб-приложения в Tomcat 6.0.18 я загружаю Spring только с тем, что необходимо для инициализации системы, а именно, на данный момент, при миграции баз данных. Я не хочу, чтобы какая-либо часть системы загружалась до тех пор, пока миграции не будут успешно завершены. Это не позволяет другим компонентам ждать завершения миграции, прежде чем работать или даже создавать ее экземпляры.
У меня есть файл startup-appcontext.xml, настроенный с помощью dbMigrationDAO, startupManager, который является ThreadPoolExecutor , и, наконец, компонентом FullSystemLauch. Я передаю список местоположений конфигурации бину FullSystemLaunch с помощью инъекции сеттера. Bean-компонент FullSystemLaunch реализует ServletContextAware , получает ссылку на текущий WebApplicationContext и, таким образом, я могу иметь ConfigurableListableBeanFactory . К сожалению, эта фабрика bean isConfigurationFrozen () возвращает true, поэтому вызов beanFactory.setConfigLocations (configLocations) не имеет никакого эффекта.
Могу ли я сделать это или Spring мешает мне сделать это, потому что это немного необычно? Это кажется разумным, если его понять, но также немного опасно. И да, я готов уничтожить текущий контекст, так как загруженные в данный момент Singletons не нужны после завершения инициализации.
Спасибо за помощь.