public class AppConfig extends Object implements Map<String,String>
name.properties
, where name
is a name of a deployment environment, such as "development",
"staging", "production", etc.
You can also provide a global file, properties from which will be loaded in all environments: global.properties
.
In all cases the files need to be on the classpath in package /app_config
.
Environment-specific file will have an "environment" part of the file name match to an environment variable called
ACTIVE_ENV
or system property active_env
.
The system property will override the environment variable!
Such configuration is easy to achieve in Unix shell:
export ACTIVE_ENV=test
If environment variable ACTIVE_ENV
is missing, it defaults to "development".
You can also provide an environment as a system property active_env
. System property overrides environment
variable ACTIVE_ENV
/app_config
package:
ACTIVE_ENV=staging
, then properties will be loaded from the following files:
java -cp $CLASSPATH com.myproject.Main -Dapp_config.properties=/opt/directory1/myproject.properties
The file-based configuration overrides classpath one. If you have a property defined in both, the classpath configuration will be completely ignored and the file property will be used.
first.name=John phrase= And the name is ${first.name}than this code will print
And the name is John
:
System.out.println(p("phrase"));Note: The order of properties does not matter.
Constructor and Description |
---|
AppConfig() |
Modifier and Type | Method and Description |
---|---|
static String |
activeEnv()
Returns current environment name as defined by environment variable
ACTIVE_ENV . |
void |
clear() |
boolean |
containsKey(Object key) |
boolean |
containsValue(Object value) |
Set<Map.Entry<String,String>> |
entrySet() |
String |
get(Object key) |
static Map<String,String> |
getAllProperties() |
static Property |
getAsProperty(String key)
Returns property instance corresponding to key.
|
static List<String> |
getKeys(String prefix)
Returns all keys that start with a prefix
|
static List<String> |
getProperties(String prefix)
Return all numbered properties with a prefix.
|
static String |
getProperty(String key)
Returns property value for a key.
|
static void |
init() |
boolean |
isEmpty() |
static boolean |
isInDevelopment() |
static boolean |
isInProduction() |
static boolean |
isInStaging() |
static boolean |
isInTestEnv() |
static boolean |
isInTestMode()
Checks if running in a context of a test by checking of a presence of a class
org.junit.Test on classpath. |
Set<String> |
keySet() |
static String |
p(String key)
Gets property, synonym for
getProperty(String) . |
static Boolean |
pBoolean(String propertyName)
Read property as
Boolean . |
static Double |
pDouble(String propertyName)
Read property as
Double . |
static Float |
pFloat(String propertyName)
Read property as
Float . |
static Integer |
pInteger(String propertyName)
Read property as
Integer . |
String |
put(String key,
String value) |
void |
putAll(Map<? extends String,? extends String> m) |
static void |
reload()
Used in tests.
|
String |
remove(Object key) |
static void |
setActiveEnv(String activeEnv)
You can change the environment dynamically.
|
static String |
setProperty(String name,
String value)
Sets a property in memory.
|
int |
size() |
Collection<String> |
values() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
public static void setActiveEnv(String activeEnv)
activeEnv
- new environment valuepublic static void init()
public static void reload()
public static String setProperty(String name, String value)
name
- - name of propertyvalue
- - value of propertypublic static Property getAsProperty(String key)
key
- key for property.public static String getProperty(String key)
key
- key of property.null
if not found.public static String p(String key)
getProperty(String)
.key
- key of propertypublic boolean containsKey(Object key)
containsKey
in interface Map<String,String>
public boolean containsValue(Object value)
containsValue
in interface Map<String,String>
public static String activeEnv()
ACTIVE_ENV
.ACTIVE_ENV
.public static boolean isInTestMode()
org.junit.Test
on classpath.org.junit.Test
is on classpath, otherwise returns false
public static boolean isInTestEnv()
ACTIVE_ENV
is "testenv".public static boolean isInProduction()
ACTIVE_ENV
is "production".public static boolean isInDevelopment()
ACTIVE_ENV
is "development".public static boolean isInStaging()
ACTIVE_ENV
is "staging".public static List<String> getKeys(String prefix)
prefix
- prefix for properties.public static List<String> getProperties(String prefix)
prop.1=one prop.2=two.. and this method is called:
Listthen the resulting list will have all properties starting fromprops = AppConfig.getProperties("prop");
prop
.
This method presumes consecutive numbers in the suffix.prefix
- prefix of numbered properties.public static Integer pInteger(String propertyName)
Integer
.propertyName
- name of property.Integer
.public static Double pDouble(String propertyName)
Double
.propertyName
- name of property.Double
.public static Float pFloat(String propertyName)
Float
.propertyName
- name of property.Float
.Copyright © 2020 JavaLite. All rights reserved.