{"id":15290827,"url":"https://github.com/ppodgorsek/configur","last_synced_at":"2026-01-31T15:01:54.959Z","repository":{"id":44516780,"uuid":"192025944","full_name":"ppodgorsek/configur","owner":"ppodgorsek","description":"ConfiguR, a persistent configuration service","archived":false,"fork":false,"pushed_at":"2022-02-10T01:44:53.000Z","size":110,"stargazers_count":1,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-26T04:27:27.121Z","etag":null,"topics":["configuration","configuration-management","java","maven"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ppodgorsek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-15T02:05:40.000Z","updated_at":"2020-03-15T22:19:25.000Z","dependencies_parsed_at":"2022-08-29T23:00:43.888Z","dependency_job_id":null,"html_url":"https://github.com/ppodgorsek/configur","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ppodgorsek/configur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppodgorsek%2Fconfigur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppodgorsek%2Fconfigur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppodgorsek%2Fconfigur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppodgorsek%2Fconfigur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppodgorsek","download_url":"https://codeload.github.com/ppodgorsek/configur/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppodgorsek%2Fconfigur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28946058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration","configuration-management","java","maven"],"created_at":"2024-09-30T16:09:38.587Z","updated_at":"2026-01-31T15:01:54.946Z","avatar_url":"https://github.com/ppodgorsek.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ConfiguR, a persistent configuration service\n\nConfiguR is a persistent configuration service, providing modules to store and retrieve configuration properties from various sources.\n\nThose sources can have many types:\n* Spring Data repositories,\n* flat files,\n* others can be easily implemented.\n\n[![Build Status](https://travis-ci.org/ppodgorsek/configur.svg?branch=master)](https://travis-ci.org/ppodgorsek/configur)\n[![Coverage Status](https://coveralls.io/repos/github/ppodgorsek/configur/badge.svg?branch=master)](https://coveralls.io/github/ppodgorsek/configur?branch=master)\n\n## How does it work?\n\nThe following attributes were defined to represent configuration properties:\n* a key,\n* a value,\n* an optional category,\n* a name to easily identify properties,\n* a description to provide additional information,\n* variations for clustered environments according to which node the property is fetched from.\n\nAll values are stored as strings in the database but methods have been provided to convert them to various other types after being fetched.\n\nConfiguration can be stored in a hierarchical manner in order to provide a better structure:\n* categories can be nested,\n* properties can simply be defined with no category.\n\nAll calls should be made to the `ConfigurationPropertySource` and `ConfigurationService` to make sure mechanisms such as caching are not bypassed.\n\n### Seamless environment integration\n\nIf needed, a new property source can be added to the environment upon startup. This can be done by defining a `ConfigurationPropertySourceApplicationListener` bean in the application context. By default, this bean will add to the environment property sources for all `ConfigurationService` instances but you can also define it with the name of the bean which must be used instead.\n\n*Important: as some implementations rely on other beans such as the datasource for Spring Data DAOs, ConfiguR cannot be used to load startup properties such as database configuration. Such properties should remain in flat files or environment properties, ConfiguR can be used for dynamic properties fetched while the application is running.*\n\n### Spring Data JPA\n\nRemember to add the following package to the list scanned by Hibernate to find entity definitions: `com.github.ppodgorsek.configur.springdata.jpa.model`\n\nIn case you would like to change the table and column names or the database constraints, simply override the default values by creating a new class in your classpath which will supersede `com.github.ppodgorsek.configur.springdata.jpa.JpaConfigurationMetadata`.\n\n### Cache abstraction\n\nThis abstraction allows to cache properties from any `ConfigurationService` instance. To avoid complex invalidation cases, categories are not cached.\n\nIn case you would like to change the cache region name, simply override the default value by creating a new class in your classpath which will supersede `com.github.ppodgorsek.configur.cache.CacheConfigurationMetadata`.\n\n## How to use this project\n\nAll artefacts of this project are available on Maven’s central repository, which makes it easy to use in your projects.\n\nIf you are using Maven, simply declare the following dependencies:\n* configur-core:  \n`    \u003cdependency\u003e`  \n`        \u003cgroupId\u003ecom.github.ppodgorsek\u003c/groupId\u003e`  \n`        \u003cartifactId\u003econfigur-core\u003c/artifactId\u003e`  \n`        \u003cversion\u003e${configur.version}\u003c/version\u003e`  \n`    \u003c/dependency\u003e`\n\n* configur-cache:  \n`    \u003cdependency\u003e`  \n`        \u003cgroupId\u003ecom.github.ppodgorsek\u003c/groupId\u003e`  \n`        \u003cartifactId\u003econfigur-cache\u003c/artifactId\u003e`  \n`        \u003cversion\u003e${configur.version}\u003c/version\u003e`  \n`    \u003c/dependency\u003e`\n\n* configur-springdata-jpa:  \n`    \u003cdependency\u003e`  \n`        \u003cgroupId\u003ecom.github.ppodgorsek\u003c/groupId\u003e`  \n`        \u003cartifactId\u003econfigur-springdata-jpa\u003c/artifactId\u003e`  \n`        \u003cversion\u003e${configur.version}\u003c/version\u003e`  \n`    \u003c/dependency\u003e`\n\n`configur-core` is the only mandatory one, the others are optional and depend on what persistent layers your project relies on.\n\n## Please contribute!\n\nHave you found an issue? Do you have an idea for an improvement? Feel free to contribute by submitting it [on the GitHub project](https://github.com/ppodgorsek/configur/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppodgorsek%2Fconfigur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppodgorsek%2Fconfigur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppodgorsek%2Fconfigur/lists"}