Skip to content

A utility application acting as a configuration bootstrapper for client applications with spring beans.

License

Notifications You must be signed in to change notification settings

dasunpubudumal/consul-kv-bootstrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Consul KV Configuration Bootstrapper

Java CI with Maven GitHub release Maintenance

Applications use different variables (e.g. connector hosts, ports, application-specific environment values) for the tasks they accomplish. Most applications require these parameters at startup, where the application is initialized with the configurations as global constants which are used at runtime. Consul KV is such a Key-Value store for storing said configurations.

This application is a utility application to bootstrap application configurations held in Consul KV upon client application initialization. Upon initialization of a Spring Bean (@Bean, @Component, etc.) use @ConsulKVBootstrapper to return properties declared in a consul-config.yml file.

@Configuration
public static class TestConfig {

    @Autowired
    static Properties properties;

    @ConsulKVBootstrapper(configFilePath = "{FILE_PATH}")
    @Bean
    Properties properties( Properties properties )
    {
        TestConfig.properties = properties;
        return properties;
    }

    public static Properties getProperties() {
        return properties;
    }
}

If it is required to set up the consul-config.yml file in JVM environment variables, make sure you indicate the configFilePath parameter as follows:

@ConsulKVBootstrapper(configFilePath = "{FILE_PATH}")

FILE_PATH you need to add to the JVM environments.

What does the annotation ConsulKVBootstrapper do?

The annotation sends Consul agent a request and fetches key-values according to the criteria that the user provides in the configuration file. Afterwards, it serializes those configurations into a Properties objects and injects into the method which is annotated with @ConsulKVBootstrapper. Note that the method annotated must take in Properties object as an argument.

Configuration file

consulHost: localhost
consulPort: 8500
serviceId: 1
serviceName: example
configurations:
  - TEST_KEY_1

If it is required to fetch all configurations, remove configurations node from the yml.

Note: Please add io.realitix.* and com.github.* in @ComponentScan as @ComponentScan(basePackages = {"io.realitix.*", "com.github.*", "<your base packages>.*"}) in your main SpringBootApplication so that the dependency components will get scanned.

Maven Dependency

<dependency>
    <groupId>com.github.dasunpubudumal</groupId>
    <artifactId>consul-kv-bootstrapper</artifactId>
    <version>1.0.0</version>
</dependency>

Add following to <repositories>.

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

About

A utility application acting as a configuration bootstrapper for client applications with spring beans.

Resources

License

Stars

Watchers

Forks

Languages