@ConfigurationProperties not pulling the external properties file

1k Views Asked by At

I've created a personal repository on Git where I have kept my application.properties file.

I've created a cloud config server ('my-config-server') and used the git repository url.

I have bound my spring-boot application that is supposed to access the external properties file with Git repository.

@javax.jws.WebService(
                  serviceName = "myService",
                  portName = "my_service",
                  targetNamespace = "urn://vdc.com/xmlmessaging/SD",
                  wsdlLocation = "classpath:myService.wsdl",
                  endpointInterface = "com.my.service.SDType")

@PropertySource("application.properties") 
@ConfigurationProperties
public class SDTypeImpl implements SDType {

/*It has various services implementation that use following method**/

private SDObj getObj (BigDecimal value) {
    AnnotationConfigApplicationContext context =
                  new AnnotationConfigApplicationContext(
                          SDTypeImpl.class);
    SDObj obj = context.getBean(SDPropertiesUtil.class).getObj(value);
    context.close();
    return obj;
}

}

Another Class:

public class SDPropertiesUtil {

@Autowired
public Environment env;

public SDObj getObj(BigDecimal value) {

String valueStr = env.getProperty(value.toString());
/*do logic*/ 
}

My application starts but fails to load properties file from my git repository.

I believe I should have an application.properties at src/main/resources in my application but since I'm using

@PropertySource("application.properties") 
@ConfigurationProperties

I'm telling my application to use the application.properties from an external location and do not use internal properties file. But this is not happening. My application is still using the internal properties file.

1

There are 1 best solutions below

4
On

The source you included doesn't show your app configuration settings to connect to the Config server. Do you mind sharing it?

This is how the config server could be queried from a client app:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

Let's say a Config server points to a Git repo which includes this file: demo-config-client-development.properties

You should be able to query the Config Server as:

curl http://localhost:8101/demo-config-client-development.properties

Assuming Config Server is running in locally and listening on 8181.

Let's also say you have a client app named: demo-config-client that connects to the Config server and runs using the development Spring profile, this app would now be able to read remote properties hosted in a Git repo through a Config server.

A detailed tutorial could be found at my blog at: http://tech.asimio.net/2016/12/09/Centralized-and-Versioned-Configuration-using-Spring-Cloud-Config-Server-and-Git.html