BAEL-2914: Immutable @ConfigurationProperties binding (#8623)
This commit is contained in:
parent
22c3abfc3a
commit
577bdf4631
2
pom.xml
2
pom.xml
|
@ -652,6 +652,7 @@
|
||||||
<module>spring-boot-ctx-fluent</module>
|
<module>spring-boot-ctx-fluent</module>
|
||||||
<module>spring-boot-custom-starter</module>
|
<module>spring-boot-custom-starter</module>
|
||||||
<module>spring-boot-deployment</module>
|
<module>spring-boot-deployment</module>
|
||||||
|
<module>spring-boot-di</module>
|
||||||
<module>spring-boot-environment</module>
|
<module>spring-boot-environment</module>
|
||||||
<module>spring-boot-flowable</module>
|
<module>spring-boot-flowable</module>
|
||||||
<!-- <module>spring-boot-gradle</module> --> <!-- Not a maven project -->
|
<!-- <module>spring-boot-gradle</module> --> <!-- Not a maven project -->
|
||||||
|
@ -1185,6 +1186,7 @@
|
||||||
<module>spring-boot-ctx-fluent</module>
|
<module>spring-boot-ctx-fluent</module>
|
||||||
<module>spring-boot-custom-starter</module>
|
<module>spring-boot-custom-starter</module>
|
||||||
<module>spring-boot-deployment</module>
|
<module>spring-boot-deployment</module>
|
||||||
|
<module>spring-boot-di</module>
|
||||||
<module>spring-boot-environment</module>
|
<module>spring-boot-environment</module>
|
||||||
<module>spring-boot-flowable</module>
|
<module>spring-boot-flowable</module>
|
||||||
<!-- <module>spring-boot-gradle</module> --> <!-- Not a maven project -->
|
<!-- <module>spring-boot-gradle</module> --> <!-- Not a maven project -->
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
<artifactId>parent-boot-2</artifactId>
|
<artifactId>parent-boot-2</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
<relativePath>../../parent-boot-2</relativePath>
|
<relativePath>../parent-boot-2</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
|
@ -16,7 +16,6 @@
|
||||||
<modules>
|
<modules>
|
||||||
<module>spring-boot-artifacts</module>
|
<module>spring-boot-artifacts</module>
|
||||||
<module>spring-boot-data</module>
|
<module>spring-boot-data</module>
|
||||||
<module>spring-boot-di</module>
|
|
||||||
<module>spring-boot-mvc-birt</module>
|
<module>spring-boot-mvc-birt</module>
|
||||||
<module>spring-boot-properties</module>
|
<module>spring-boot-properties</module>
|
||||||
<module>spring-boot-testing</module>
|
<module>spring-boot-testing</module>
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.baeldung.configurationproperties;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
@ConfigurationPropertiesScan
|
||||||
|
public class ImmutableConfigPropertiesApp {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(ImmutableConfigPropertiesApp.class, args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.baeldung.configurationproperties;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.boot.context.properties.ConstructorBinding;
|
||||||
|
|
||||||
|
@ConfigurationProperties(prefix = "mail.credentials")
|
||||||
|
@ConstructorBinding
|
||||||
|
public class ImmutableCredentials {
|
||||||
|
|
||||||
|
private final String authMethod;
|
||||||
|
private final String username;
|
||||||
|
private final String password;
|
||||||
|
|
||||||
|
public ImmutableCredentials(String authMethod, String username, String password) {
|
||||||
|
this.authMethod = authMethod;
|
||||||
|
this.username = username;
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuthMethod() {
|
||||||
|
return authMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.baeldung.configurationproperties;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.TestPropertySource;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(classes = ImmutableConfigPropertiesApp.class)
|
||||||
|
@TestPropertySource("classpath:configprops-test.properties")
|
||||||
|
public class ImmutableConfigurationPropertiesIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ImmutableCredentials immutableCredentials;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenConstructorBindingUsed_thenPropertiesCorrectlyBound() {
|
||||||
|
assertThat(immutableCredentials.getAuthMethod()).isEqualTo("SHA1");
|
||||||
|
assertThat(immutableCredentials.getUsername()).isEqualTo("john");
|
||||||
|
assertThat(immutableCredentials.getPassword()).isEqualTo("password");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue