下面列出了怎么用org.springframework.core.env.SystemEnvironmentPropertySource的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
@EnabledOnOs(OS.WINDOWS)
public void testOnWindows() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.deployer.local.working-directories-root", "file:/C:/tmp");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
LocalDeployerProperties properties = context.getBean(LocalDeployerProperties.class);
assertThat(properties.getWorkingDirectoriesRoot()).isNotNull();
assertThat(properties.getWorkingDirectoriesRoot().toString()).isEqualTo("C:\\tmp");
});
}
@Test
@EnabledOnOs(OS.LINUX)
public void testOnLinux() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.deployer.local.working-directories-root", "/tmp");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
LocalDeployerProperties properties = context.getBean(LocalDeployerProperties.class);
assertThat(properties.getWorkingDirectoriesRoot()).isNotNull();
assertThat(properties.getWorkingDirectoriesRoot().toString()).isEqualTo("/tmp");
});
}
@Test
public void testBasicAuth() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.dataflow.client.authentication.basic.username", "user1");
map.put("spring.cloud.dataflow.client.authentication.basic.password", "pw1");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
DataFlowClientProperties properties = context.getBean(DataFlowClientProperties.class);
assertThat(properties.getAuthentication().getBasic().getUsername()).isEqualTo("user1");
assertThat(properties.getAuthentication().getBasic().getPassword()).isEqualTo("pw1");
});
}
@Test
public void testLegacyOauth() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.dataflow.client.authentication.access-token", "token1");
map.put("spring.cloud.dataflow.client.authentication.client-id", "id1");
map.put("spring.cloud.dataflow.client.authentication.client-secret", "secret1");
map.put("spring.cloud.dataflow.client.authentication.token-uri", "uri1");
map.put("spring.cloud.dataflow.client.authentication.scope", "s1,s2");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
DataFlowClientProperties properties = context.getBean(DataFlowClientProperties.class);
assertThat(properties.getAuthentication().getAccessToken()).isEqualTo("token1");
assertThat(properties.getAuthentication().getClientId()).isEqualTo("id1");
assertThat(properties.getAuthentication().getClientSecret()).isEqualTo("secret1");
assertThat(properties.getAuthentication().getTokenUri()).isEqualTo("uri1");
assertThat(properties.getAuthentication().getScope()).containsExactly("s1", "s2");
});
}
@Test
public void testCommonSpringSecurity() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.dataflow.client.authentication.oauth2.client-registration-id", "regid1");
map.put("spring.cloud.dataflow.client.authentication.oauth2.username", "user1");
map.put("spring.cloud.dataflow.client.authentication.oauth2.password", "pw1");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
DataFlowClientProperties properties = context.getBean(DataFlowClientProperties.class);
assertThat(properties.getAuthentication().getOauth2().getClientRegistrationId()).isEqualTo("regid1");
assertThat(properties.getAuthentication().getOauth2().getUsername()).isEqualTo("user1");
assertThat(properties.getAuthentication().getOauth2().getPassword()).isEqualTo("pw1");
});
}
private static PropertyMapper getPropertyMapper(PropertySource<?> source) {
if (source instanceof SystemEnvironmentPropertySource
&& hasSystemEnvironmentName(source)) {
return new DelegatingPropertyMapper(SystemEnvironmentPropertyMapper.INSTANCE,
DefaultPropertyMapper.INSTANCE);
}
return new DelegatingPropertyMapper(DefaultPropertyMapper.INSTANCE);
}
private StandardEnvironment newStandardEnvironment() {
Map<String, Object> envProperties = new HashMap<>();
envProperties.put("IFS-X", "${IFS-X}");
PropertySource<Map<String, Object>> systemEnvironmentPropertySource = new SystemEnvironmentPropertySource("system-env", envProperties);
StandardEnvironment environment = new StandardEnvironment();
environment.getPropertySources()
.addAfter(StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, systemEnvironmentPropertySource);
return environment;
}
@Test
public void testPreemtiveEnabled() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("maven.use-wagon", "true");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
MavenProperties properties = context.getBean(MavenProperties.class);
assertThat(properties.isUseWagon()).isTrue();
});
}
@Test
public void testRemoteRepositories() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("maven.remote-repositories.repo1.url", "url1");
map.put("maven.remote-repositories.repo1.wagon.http.all.use-preemptive", "true");
map.put("maven.remote-repositories.repo1.wagon.http.all.use-default-headers", "true");
map.put("maven.remote-repositories.repo1.wagon.http.all.connection-timeout", "2");
map.put("maven.remote-repositories.repo1.wagon.http.all.read-timeout", "3");
map.put("maven.remote-repositories.repo1.wagon.http.all.headers.header1", "value1");
map.put("maven.remote-repositories.repo1.wagon.http.all.params.http.connection.timeout", "1");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
MavenProperties properties = context.getBean(MavenProperties.class);
assertThat(properties.getRemoteRepositories().size()).isEqualTo(1);
assertThat(properties.getRemoteRepositories()).containsOnlyKeys("repo1");
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp().size())
.isEqualTo(1);
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).isUsePreemptive()).isTrue();
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).isUseDefaultHeaders()).isTrue();
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).getConnectionTimeout()).isEqualTo(2);
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).getReadTimeout()).isEqualTo(3);
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).getHeaders()).containsOnlyKeys("header1");
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).getHeaders().get("header1")).isEqualTo("value1");
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).getParams()).containsOnlyKeys("http.connection.timeout");
assertThat(properties.getRemoteRepositories().get("repo1").getWagon().getHttp()
.get(WagonHttpMethod.all).getParams().get("http.connection.timeout")).isEqualTo("1");
});
}
@Test
public void setAllProperties() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.deployer.cloudfoundry.org", "org");
map.put("spring.cloud.deployer.cloudfoundry.space", "space");
map.put("spring.cloud.deployer.cloudfoundry.url", "http://example.com");
map.put("spring.cloud.deployer.cloudfoundry.username", "username");
map.put("spring.cloud.deployer.cloudfoundry.password", "password");
map.put("spring.cloud.deployer.cloudfoundry.client-id", "id");
map.put("spring.cloud.deployer.cloudfoundry.client-secret", "secret");
map.put("spring.cloud.deployer.cloudfoundry.login-hint", "hint");
map.put("spring.cloud.deployer.cloudfoundry.skip-ssl-validation", "true");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
CloudFoundryConnectionProperties properties = context.getBean(CloudFoundryConnectionProperties.class);
assertThat(properties.getOrg()).isEqualTo("org");
assertThat(properties.getSpace()).isEqualTo("space");
assertThat(properties.getUrl().toString()).isEqualTo("http://example.com");
assertThat(properties.getUsername()).isEqualTo("username");
assertThat(properties.getPassword()).isEqualTo("password");
assertThat(properties.getClientId()).isEqualTo("id");
assertThat(properties.getClientSecret()).isEqualTo("secret");
assertThat(properties.getLoginHint()).isEqualTo("hint");
assertThat(properties.isSkipSslValidation()).isTrue();
});
}
@SuppressWarnings("unchecked")
private static Map<String, Object> getOrAdd(MutablePropertySources sources,
String name) {
if (sources.contains(name)) {
return (Map<String, Object>) sources.get(name).getSource();
}
Map<String, Object> map = new HashMap<>();
sources.addFirst(new SystemEnvironmentPropertySource(name, map));
return map;
}
@Test
public void setAllProperties() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.deployer.local.debug-port", "8888");
map.put("spring.cloud.deployer.local.debug-suspend", "n");
map.put("spring.cloud.deployer.local.delete-files-on-exit", false);
map.put("spring.cloud.deployer.local.env-vars-to-inherit", "FOO,BAR");
map.put("spring.cloud.deployer.local.inherit-logging", true);
map.put("spring.cloud.deployer.local.java-cmd", "foobar1");
map.put("spring.cloud.deployer.local.java-opts", "foobar2");
map.put("spring.cloud.deployer.local.maximum-concurrent-tasks", 1234);
map.put("spring.cloud.deployer.local.port-range.low", 2345);
map.put("spring.cloud.deployer.local.port-range.high", 2346);
map.put("spring.cloud.deployer.local.shutdown-timeout", 3456);
map.put("spring.cloud.deployer.local.use-spring-application-json", false);
map.put("spring.cloud.deployer.local.docker.network", "spring-cloud-dataflow-server_default");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
LocalDeployerProperties properties = context.getBean(LocalDeployerProperties.class);
assertThat(properties.getDebugPort()).isEqualTo(8888);
assertThat(properties.getDebugSuspend()).isEqualTo("n");
assertThat(properties.isDeleteFilesOnExit()).isFalse();
assertThat(properties.getEnvVarsToInherit()).containsExactly("FOO", "BAR");
assertThat(properties.isInheritLogging()).isTrue();
assertThat(properties.getJavaCmd()).contains("foobar1");
assertThat(properties.getJavaOpts()).contains("foobar2");
assertThat(properties.getMaximumConcurrentTasks()).isEqualTo(1234);
assertThat(properties.getPortRange()).isNotNull();
assertThat(properties.getPortRange().getLow()).isEqualTo(2345);
assertThat(properties.getPortRange().getHigh()).isEqualTo(2346);
assertThat(properties.getShutdownTimeout()).isEqualTo(3456);
assertThat(properties.isUseSpringApplicationJson()).isFalse();
assertThat(properties.getDocker().getNetwork()).isEqualTo("spring-cloud-dataflow-server_default");
});
}
@Test
public void setAllPropertiesCamelCase() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.deployer.local.debugPort", "8888");
map.put("spring.cloud.deployer.local.debugSuspend", "n");
map.put("spring.cloud.deployer.local.deleteFilesOnExit", false);
map.put("spring.cloud.deployer.local.envVarsToInherit", "FOO,BAR");
map.put("spring.cloud.deployer.local.inheritLogging", true);
map.put("spring.cloud.deployer.local.javaCmd", "foobar1");
map.put("spring.cloud.deployer.local.javaOpts", "foobar2");
map.put("spring.cloud.deployer.local.maximumConcurrentTasks", 1234);
map.put("spring.cloud.deployer.local.portRange.low", 2345);
map.put("spring.cloud.deployer.local.portRange.high", 2346);
map.put("spring.cloud.deployer.local.shutdownTimeout", 3456);
map.put("spring.cloud.deployer.local.useSpringApplicationJson", false);
map.put("spring.cloud.deployer.local.docker.network", "spring-cloud-dataflow-server_default");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
LocalDeployerProperties properties = context.getBean(LocalDeployerProperties.class);
assertThat(properties.getDebugPort()).isEqualTo(8888);
assertThat(properties.getDebugSuspend()).isEqualTo("n");
assertThat(properties.isDeleteFilesOnExit()).isFalse();
assertThat(properties.getEnvVarsToInherit()).containsExactly("FOO", "BAR");
assertThat(properties.isInheritLogging()).isTrue();
assertThat(properties.getJavaCmd()).contains("foobar1");
assertThat(properties.getJavaOpts()).contains("foobar2");
assertThat(properties.getMaximumConcurrentTasks()).isEqualTo(1234);
assertThat(properties.getPortRange()).isNotNull();
assertThat(properties.getPortRange().getLow()).isEqualTo(2345);
assertThat(properties.getPortRange().getHigh()).isEqualTo(2346);
assertThat(properties.getShutdownTimeout()).isEqualTo(3456);
assertThat(properties.isUseSpringApplicationJson()).isFalse();
assertThat(properties.getDocker().getNetwork()).isEqualTo("spring-cloud-dataflow-server_default");
});
}
@Test
public void registryConfigurationProperties() {
this.contextRunner
.withInitializer(context -> {
Map<String, Object> map = new HashMap<>();
// harbor - dockeroauth2
map.put("spring.cloud.dataflow.container.registry-configurations[goharbor].registry-host", "demo.goharbor.io");
map.put("spring.cloud.dataflow.container.registry-configurations[goharbor].authorization-type", "dockeroauth2");
map.put("spring.cloud.dataflow.container.registry-configurations[goharbor].user", "admin");
map.put("spring.cloud.dataflow.container.registry-configurations[goharbor].secret", "Harbor12345");
map.put("spring.cloud.dataflow.container.registry-configurations[goharbor].disable-ssl-verification", "true");
// amazon ecr - awsecr
map.put("spring.cloud.dataflow.container.registry-configurations[myamazonaws].registry-host", "283191309520.dkr.ecr.us-west-1.amazonaws.com");
map.put("spring.cloud.dataflow.container.registry-configurations[myamazonaws].authorization-type", "awsecr");
map.put("spring.cloud.dataflow.container.registry-configurations[myamazonaws].user", "myawsuser");
map.put("spring.cloud.dataflow.container.registry-configurations[myamazonaws].secret", "myawspassword");
map.put("spring.cloud.dataflow.container.registry-configurations[myamazonaws].extra[region]", "us-west-1");
map.put("spring.cloud.dataflow.container.registry-configurations[myamazonaws].extra[registryIds]", "283191309520");
context.getEnvironment().getPropertySources().addLast(new SystemEnvironmentPropertySource(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, map));
})
.withUserConfiguration(Config1.class)
.run((context) -> {
ContainerImageMetadataProperties properties = context.getBean(ContainerImageMetadataProperties.class);
assertThat(properties.getRegistryConfigurations()).hasSize(2);
RegistryConfiguration goharborConf = properties.getRegistryConfigurations().get("goharbor");
assertThat(goharborConf).isNotNull();
assertThat(goharborConf.getRegistryHost()).isEqualTo("demo.goharbor.io");
assertThat(goharborConf.getAuthorizationType()).isEqualTo(RegistryConfiguration.AuthorizationType.dockeroauth2);
assertThat(goharborConf.getUser()).isEqualTo("admin");
assertThat(goharborConf.getSecret()).isEqualTo("Harbor12345");
assertThat(goharborConf.isDisableSslVerification()).isTrue();
assertThat(goharborConf.getExtra()).isEmpty();
RegistryConfiguration myamazonawsConf = properties.getRegistryConfigurations().get("myamazonaws");
assertThat(myamazonawsConf).isNotNull();
assertThat(myamazonawsConf.getRegistryHost()).isEqualTo("283191309520.dkr.ecr.us-west-1.amazonaws.com");
assertThat(myamazonawsConf.getAuthorizationType()).isEqualTo(RegistryConfiguration.AuthorizationType.awsecr);
assertThat(myamazonawsConf.getUser()).isEqualTo("myawsuser");
assertThat(myamazonawsConf.getSecret()).isEqualTo("myawspassword");
assertThat(myamazonawsConf.isDisableSslVerification()).isFalse();
assertThat(myamazonawsConf.getExtra()).hasSize(2);
assertThat(myamazonawsConf.getExtra().get("region")).isEqualTo("us-west-1");
assertThat(myamazonawsConf.getExtra().get("registryIds")).isEqualTo("283191309520");
});
}
public EncryptableSystemEnvironmentPropertySourceWrapper(SystemEnvironmentPropertySource delegate, EncryptablePropertyResolver resolver, EncryptablePropertyFilter filter) {
super(delegate.getName(), delegate.getSource());
encryptableDelegate = new CachingDelegateEncryptablePropertySource<>(delegate, resolver, filter);
}