@Bean
ArchaiusStartup ArchaiusStartup(ExtensionManagerImpl em, @Qualifier("GlobalProperties") Properties props,
DataSourceFactory dsf, RefreshableFixedDelayPollingScheduler scheduler) {
ArchaiusStartup.setGlobalDefaults(props);
ArchaiusStartup startup = new ArchaiusStartup();
startup.setExtensionManager(em);
startup.setDataSourceFactory(dsf);
startup.setSchedulers(Arrays.asList(scheduler));
EMUtils.addConfig(em, new DefaultTransformedEnvironmentProperties(), "DefaultEnvironmentConfig");
EMUtils.addConfig(em, new TransformedEnvironmentProperties(), "EnvironmentConfig");
EMUtils.addConfig(em, new NamedSystemConfiguration(), "SystemConfig");
AbstractConfiguration localFileConfig = OptionalPropertiesConfigurationFactory.getConfiguration("cattle-local.properties");
EMUtils.addConfig(em, localFileConfig, "CattleLocalFileConfig");
NamedDynamicConfiguration dbConfig = new NamedDynamicConfiguration(new LazyJDBCSource(), scheduler);
dbConfig.setSourceName("Database");
EMUtils.addConfig(em, dbConfig, "DatabaseConfig");
AbstractConfiguration cattleFileConfig = OptionalPropertiesConfigurationFactory.getConfiguration("cattle.properties");
EMUtils.addConfig(em, cattleFileConfig, "CattleFileConfig");
AbstractConfiguration cattleOverrideFileConfig = OptionalPropertiesConfigurationFactory.getConfiguration("cattle-override.properties");
EMUtils.addConfig(em, cattleOverrideFileConfig, "CattleOverrideFileConfig");
AbstractConfiguration cattleGlobalFileConfig = OptionalPropertiesConfigurationFactory.getConfiguration("cattle-global.properties");
EMUtils.addConfig(em, cattleGlobalFileConfig, "CattleGlobalFileConfig");
NamedMapConfiguration defaultsConfig = new NamedMapConfiguration(props);
defaultsConfig.setSourceName("Code Packaged Defaults");
EMUtils.addConfig(em, defaultsConfig, "DefaultsConfig");
startup.init();
em.start();
startup.start();
return startup;
}