BAEL-2719: Fixed the changes to load external file

This commit is contained in:
PranayJain 2019-03-10 17:30:20 +05:30
parent 3fe623dcab
commit 1b48e7943c
8 changed files with 122 additions and 36 deletions

View File

@ -110,6 +110,29 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18</version>
<executions>
<!-- Invokes both the integration-test and the verify goals of the Failsafe
Maven plugin -->
<execution>
<id>integration-tests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<!-- Skips integration tests if the value of skip.integration.tests
property is true -->
<includes>
<include>**/ExternalPropertyFileLoaderIntegrationTest.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

View File

@ -0,0 +1,43 @@
package com.baeldung.properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ConfProperties {
@Value("${url}")
private String url;
@Value("${username}")
private String username;
@Value("${password}")
private String password;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

View File

@ -0,0 +1,18 @@
package com.baeldung.properties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.FileSystemResource;
@Configuration
public class ExternalPropertyConfigurer {
@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
properties.setLocation(new FileSystemResource("src/test/resources/external/conf.properties"));
properties.setIgnoreResourceNotFound(false);
return properties;
}
}

View File

@ -1,17 +1,18 @@
package com.baeldung.properties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
@SpringBootApplication
public class ExternalPropertyFileLoader {
@Autowired
ConfProperties prop;
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder(ExternalPropertyFileLoader.class).properties("spring.config.name:conf", "spring.config.location:file:src/main/resources/external/")
.build()
new SpringApplicationBuilder(ExternalPropertyFileLoader.class).build()
.run(args);
ConfigurableEnvironment environment = applicationContext.getEnvironment();
environment.getProperty("username");
}
}

View File

@ -1,4 +0,0 @@
url=jdbc:postgresql://localhost:5432/
username=admin
password=root
spring.main.allow-bean-definition-overriding=true

View File

@ -0,0 +1,27 @@
package com.baeldung.properties;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
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.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ExternalPropertyFileLoader.class)
public class ExternalPropertyFileLoaderIntegrationTest {
@Autowired
ConfProperties props;
@Test
public void whenExternalisedPropertiesLoaded_thenReadValues() throws IOException {
assertEquals("jdbc:postgresql://localhost:5432/", props.getUrl());
assertEquals("admin", props.getUsername());
assertEquals("root", props.getPassword());
}
}

View File

@ -1,25 +0,0 @@
package com.baeldung.properties;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
public class ExternalPropertyFileLoaderUnitTest {
@Test
public void whenExternalisedPropertiesLoaded_thenReadValues() {
ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder(ExternalPropertyFileLoader.class).properties("spring.config.name:conf", "spring.config.location:file:src/main/resources/external/")
.build()
.run();
ConfigurableEnvironment environment = applicationContext.getEnvironment();
Assert.assertEquals(environment.getProperty("url"), "jdbc:postgresql://localhost:5432/");
Assert.assertEquals(environment.getProperty("username"), "admin");
Assert.assertEquals(environment.getProperty("password"), "root");
}
}

View File

@ -0,0 +1,3 @@
url=jdbc:postgresql://localhost:5432/
username=admin
password=root