{"id":27689502,"url":"https://github.com/eclipse/configjsr","last_synced_at":"2026-03-05T02:32:06.691Z","repository":{"id":25735438,"uuid":"104388908","full_name":"eclipse/ConfigJSR","owner":"eclipse","description":"JSR382","archived":false,"fork":false,"pushed_at":"2023-08-06T14:45:08.000Z","size":815,"stargazers_count":30,"open_issues_count":24,"forks_count":21,"subscribers_count":16,"default_branch":"master","last_synced_at":"2026-01-23T18:13:33.130Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse.png","metadata":{"files":{"readme":"README.adoc","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-09-21T19:17:33.000Z","updated_at":"2025-08-13T11:17:35.000Z","dependencies_parsed_at":"2025-04-25T10:24:13.076Z","dependency_job_id":null,"html_url":"https://github.com/eclipse/ConfigJSR","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse/ConfigJSR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse%2FConfigJSR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse%2FConfigJSR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse%2FConfigJSR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse%2FConfigJSR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse","download_url":"https://codeload.github.com/eclipse/ConfigJSR/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse%2FConfigJSR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30107209,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-04-25T10:13:58.045Z","updated_at":"2026-03-05T02:32:06.669Z","avatar_url":"https://github.com/eclipse.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"//\n// Copyright (c) 2016-2019 Contributors to the Eclipse Foundation\n//\n// See the NOTICE file(s) distributed with this work for additional\n// information regarding copyright ownership.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\nimage:https://badges.gitter.im/eclipse/ConfigJSR.svg[link=\"https://gitter.im/eclipse/ConfigJSR\"]\n\nimage:https://api.travis-ci.org/eclipse/ConfigJSR.svg?branch=master[link=\"https://travis-ci.org/eclipse/ConfigJSR\"]\n\n= JSR-382 - Configuration API for Java, v1.0\nSpecification Leads: Emily Jiang, Mark Struberg\n\nThis is the official Source Repository of this very JSR.\n\n== Status\n\nConfiguration API for Java JSR Draft - Work In Progress!\n\n== How to Contribute?\n\n=== JCP page\n\nhttps://jcp.org/en/jsr/detail?id=382\n\n=== Twitter\n\nhttps://twitter.com/ConfigJSR\n\n\n=== Source Repository\n\nThe source code is available under the Apache License, v2.0 and hosted at https://github.com/eclipse/ConfigJSR\n\n=== Mailing Lists\n\nThe Expert Group list is only used for announcements and voting.\n\n configjsr-experts@eclipse.org\n\nAll the normal interaction is going on on the general discussion list \n\n configjsr-discuss@eclipse.org\n \nTo subscribe to a list just send a mail to `configjsr-discuss-join (at) eclipse.org` \n\n=== EG Meeting minutes\n\nhttps://docs.google.com/document/d/1ixB3_Lu4Os__mw4_W5zlKspUE-lL3_h0asflewErlFY/edit?usp=sharing\n\n== Rationale\n\nThe majority of applications need to be configured based on a running environment.\nIt must be possible to modify configuration data from outside an application so that the application itself does not need to be repackaged.\n\nThe configuration data can come from different locations and in different formats (e.g. system properties, system environment variables, .properties, .xml, datasource).\nWe call these config locations ConfigSources.\nIf the same property is defined in multiple ConfigSources, we apply a policy to specify which one of the values will effectively be used.\n\nUnder some circumstances, some data sources may change dynamically.\nThe changed values should be fed into the client without the need for restarting the application.\nThis requirement is particularly important for microservices running in a cloud environment.\nThe JavaConfig approach allows to pick up configured values immediately after they got changed.\n\n== Influences and History\n\nThere are a number of Config projects which directly influenced this proposal and acted as basis for this API, such as:\n\n* DeltaSpike Config (http://deltaspike.apache.org/documentation/configuration.html)\n* Extracted parts of DeltaSpike Config (https://github.com/struberg/javaConfig/)\n* Apache Tamaya (https://tamaya.incubator.apache.org/)\n\nThe approach of those got merged together into MicroProfile Config (https://github.com/eclipse/microprofile-config).\nThis now serves as a starting point for this very JSR.\n\n== Implementations\n\nJavaConfig does not contain an implementation itself but only provides the specified API and, a TCK and documentation.\n\n== Design\n\nThe current configuration of an application can be accessed via `ConfigProvider#getConfig()`.\n\nA `Config` consists of the information collected from the registered `javax.config.spi.ConfigSource` s.\nThese `ConfigSource` s get sorted according to their _ordinal_.\nThat way it is possible to overwrite configuration with lower importance from outside.\n\nBy default there are 3 default ConfigSources:\n\n* `System.getProperties()` (ordinal=400)\n* `System.getenv()` (ordinal=300)\n* all `META-INF/javaconfig.properties` files on the ClassPath.\n(default ordinal=100, separately configurable via a config_ordinal property inside each file)\n\nTherefore, the default values can be specified in the above files packaged with the application and the value can be overwritten later for each deployment. \nA higher ordinal number takes precedence over a lower number.\n\n== Custom ConfigSources\n\nIt is possible to write and register a custom `ConfigSources`.\nAn example would be a ConfigSource which gets the configured values from a shared database table in a cluster.\n\n== Building\n\nThe whole JavaConfig project can be built via Apache Maven\n\n`$\u003e mvn clean install`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse%2Fconfigjsr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse%2Fconfigjsr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse%2Fconfigjsr/lists"}