/** * Add, remove or re-order any {@link PropertySource}s in this application's * environment. * @param environment this application's environment * @param args arguments passed to the {@code run} method * @see #configureEnvironment(ConfigurableEnvironment, String[]) */ protected void configurePropertySources(ConfigurableEnvironment environment, String[] args) { MutablePropertySources sources = environment.getPropertySources(); if (this.defaultProperties != null && !this.defaultProperties.isEmpty()) { sources.addLast( new MapPropertySource("defaultProperties", this.defaultProperties)); } if (this.addCommandLineProperties && args.length > 0) { String name = CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME; if (sources.contains(name)) { PropertySource<?> source = sources.get(name); CompositePropertySource composite = new CompositePropertySource(name); composite.addPropertySource(new SimpleCommandLinePropertySource( name + "-" + args.hashCode(), args)); composite.addPropertySource(source); sources.replace(name, composite); } else { sources.addFirst(new SimpleCommandLinePropertySource(args)); } } }
@Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { if (CloudPlatform.CLOUD_FOUNDRY.isActive(environment)) { Properties properties = new Properties(); addWithPrefix(properties, getPropertiesFromApplication(environment), "vcap.application."); addWithPrefix(properties, getPropertiesFromServices(environment), "vcap.services."); MutablePropertySources propertySources = environment.getPropertySources(); if (propertySources.contains( CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME)) { propertySources.addAfter( CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME, new PropertiesPropertySource("vcap", properties)); } else { propertySources .addFirst(new PropertiesPropertySource("vcap", properties)); } } }
public static void main(String[] args) throws Exception { String jbakeryHome = ensureJbakeryHomeIsSet(); System.setProperty("log4j.configurationFile", log4jConfigPath(jbakeryHome)); log.info("Working directory {}", System.getProperty("user.dir")); log.info("JBAKERY_HOME is {}", jbakeryHome); // bootstrap application with Spring. String jbakeryConfigPath = jbakeryConfigPath(jbakeryHome); log.info("Using config file {}", jbakeryConfigPath); System.setProperty("spring.config.name", jbakeryConfigPath); CommandLinePropertySource clps = new SimpleCommandLinePropertySource(args); AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.getEnvironment().getPropertySources().addFirst(clps); context.registerShutdownHook(); context.register(Config.class); context.refresh(); }
@Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { log.info("Detecting 'K8S'-Environment ..."); Properties properties = new Properties(); if (specificFilesystemLayoutExists()) { properties.put(K8S_ENABLED_KEY, Boolean.TRUE.toString()); properties.put(K8S_NAMESPACE, readNamespace()); log.info("'K8S'-metadata : {}", properties.toString()); } else { log.info("Ignore 'K8S', no metadata available."); properties.put(K8S_ENABLED_KEY, Boolean.FALSE.toString()); } // MutablePropertySources propertySources = environment.getPropertySources(); if (propertySources.contains(CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME)) { propertySources.addAfter(CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME, new PropertiesPropertySource(K8S_PREFIX, properties)); } else { propertySources.addFirst(new PropertiesPropertySource(K8S_PREFIX, properties)); } }
public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); // convert the command line argument to properties CommandLinePropertySource<?> ps = new SimpleCommandLinePropertySource(args); ctx.getEnvironment().getPropertySources().addFirst(ps); ctx.register(ApplicationConfiguration.class); ctx.refresh(); try { SpringApplication.run(MarketplaceApplication.class, args); } finally { ctx.close(); } }
@Test public void commandLinePropertySource() throws Exception { SpringApplication application = new SpringApplication(ExampleConfig.class); application.setWebEnvironment(false); ConfigurableEnvironment environment = new StandardEnvironment(); application.setEnvironment(environment); this.context = application.run("--foo=bar"); assertThat(environment).has(matchingPropertySource( CommandLinePropertySource.class, "commandLineArgs")); }
@Test public void commandLinePropertySource() throws Exception { SpringApplication application = new SpringApplication(ExampleConfig.class); application.setWebEnvironment(false); ConfigurableEnvironment environment = new StandardEnvironment(); application.setEnvironment(environment); this.context = application.run("--foo=bar"); assertTrue(hasPropertySource(environment, CommandLinePropertySource.class, "commandLineArgs")); }