Package io.microsphere.spring.config
Class ConfigurationPropertyRepository
java.lang.Object
io.microsphere.spring.config.ConfigurationPropertyRepository
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.context.EnvironmentAware
public class ConfigurationPropertyRepository
extends Object
implements org.springframework.context.EnvironmentAware, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
A repository for managing
ConfigurationProperty instances with support for configuration via Spring's Environment.
This class provides methods to add, remove, retrieve, and manage configuration properties. It also allows integration with Spring's
lifecycle management through the InitializingBean and DisposableBean interfaces, as well as environment-based
property configuration through the EnvironmentAware interface.
Configuration Properties
- "microsphere.spring.config-property-repository.max-size": Sets the maximum number of properties that can be stored in the repository. Defaults to "99999" if not specified.
Example Usage
// Create a new repository instance
ConfigurationPropertyRepository repository = new ConfigurationPropertyRepository();
// Set the environment to load max size from configuration
ConfigurableEnvironment environment = new StandardEnvironment();
repository.setEnvironment(environment);
// Initialize the repository (usually done automatically by Spring)
repository.afterPropertiesSet();
// Add a configuration property
ConfigurationProperty property = new ConfigurationProperty("my.property.name");
property.setValue("exampleValue");
repository.add(property);
// Retrieve the property
ConfigurationProperty retrieved = repository.get("my.property.name");
System.out.println(retrieved.getValue()); // Output: exampleValue
// Clean up resources when done
repository.destroy();
- Since:
- 1.0.0
- Author:
- Mercy
- See Also:
-
ConfigurationProperty
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final intThe default max size ofConfigurationPropertyRepositorystatic final StringThe max size ofConfigurationPropertyRepositorystatic final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(io.microsphere.beans.ConfigurationProperty configurationProperty) Add aConfigurationPropertyinstancevoidInitializes the internal repository map with a capacity derived from the configuredmax size.booleanDetermine whether the repository contains the specified nameio.microsphere.beans.ConfigurationPropertycreateIfAbsent(String name) Create aConfigurationPropertyinstance if absentvoiddestroy()clear the repositoryio.microsphere.beans.ConfigurationPropertyGet aConfigurationPropertyinstance by nameCollection<io.microsphere.beans.ConfigurationProperty>getAll()Get allConfigurationPropertyinstancesintGet the max size of the repositoryReturns the internal repository map.io.microsphere.beans.ConfigurationPropertyRemove aConfigurationPropertyinstance by namevoidsetEnvironment(org.springframework.core.env.Environment environment) Sets theEnvironmentand reads the maximum repository size from the "microsphere.spring.config-property-repository.max-size" configuration property.
-
Field Details
-
BEAN_NAME
- See Also:
-
PROPERTY_NAME_PREFIX
- See Also:
-
DEFAULT_MAX_SIZE_PROPERTY_VALUE
public static final int DEFAULT_MAX_SIZE_PROPERTY_VALUEThe default max size ofConfigurationPropertyRepository -
MAX_SIZE_PROPERTY_NAME
@ConfigurationProperty(type=int.class, description="The max size of the repository for ConfigurationProperty instances", defaultValue="99999", source="system-properties") public static final String MAX_SIZE_PROPERTY_NAMEThe max size ofConfigurationPropertyRepository- See Also:
-
-
Constructor Details
-
ConfigurationPropertyRepository
public ConfigurationPropertyRepository()
-
-
Method Details
-
add
public void add(io.microsphere.beans.ConfigurationProperty configurationProperty) Add aConfigurationPropertyinstance- Parameters:
configurationProperty- aConfigurationPropertyinstance
-
remove
Remove aConfigurationPropertyinstance by name- Parameters:
name-the name of ConfigurationProperty
-
get
Get aConfigurationPropertyinstance by name- Parameters:
name-the name of ConfigurationProperty- Returns:
nullif not found
-
contains
Determine whether the repository contains the specified name- Parameters:
name-the name of ConfigurationProperty- Returns:
trueif contains, otherwisefalse
-
createIfAbsent
Create aConfigurationPropertyinstance if absent- Parameters:
name-the name of ConfigurationProperty- Returns:
- the
ConfigurationPropertyinstance
-
getAll
Get allConfigurationPropertyinstances- Returns:
- never
null
-
getMaxSize
public int getMaxSize()Get the max size of the repository- Returns:
- max size
-
setEnvironment
public void setEnvironment(org.springframework.core.env.Environment environment) Sets theEnvironmentand reads the maximum repository size from the "microsphere.spring.config-property-repository.max-size" configuration property. Falls back toDEFAULT_MAX_SIZE_PROPERTY_VALUEif the property is not set.Example Usage
ConfigurationPropertyRepository repository = new ConfigurationPropertyRepository(); // Assume the environment has "microsphere.spring.config-property-repository.max-size=3" repository.setEnvironment(environment); repository.afterPropertiesSet(); assertEquals(3, repository.getMaxSize());- Specified by:
setEnvironmentin interfaceorg.springframework.context.EnvironmentAware- Parameters:
environment- the SpringEnvironmentto read configuration from
-
afterPropertiesSet
public void afterPropertiesSet()Initializes the internal repository map with a capacity derived from the configuredmax size. This method is typically called automatically by the Spring container after all properties have been set.Example Usage
ConfigurationPropertyRepository repository = new ConfigurationPropertyRepository(); repository.setEnvironment(environment); repository.afterPropertiesSet(); // The repository is now ready to store ConfigurationProperty instances repository.add(new ConfigurationProperty("my.property")); assertTrue(repository.contains("my.property"));- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean
-
destroy
clear the repositoryExample Usage
ConfigurationPropertyRepository repository = new ConfigurationPropertyRepository(); repository.setEnvironment(applicationContext.getEnvironment()); repository.afterPropertiesSet(); repository.add(configurationProperty); // When shutting down repository.destroy(); // clears all stored properties- Specified by:
destroyin interfaceorg.springframework.beans.factory.DisposableBean- Throws:
Exception- if an error occurs during cleanup
-
getRepository
Returns the internal repository map. If the repository has not been initialized yet,afterPropertiesSet()is invoked to lazily initialize it.Example Usage
// In a subclass overriding repository behavior: Map<String, ConfigurationProperty> repo = getRepository(); repo.put("custom.property", new ConfigurationProperty("custom.property")); assertTrue(repo.containsKey("custom.property"));- Returns:
- the internal map of property names to
ConfigurationPropertyinstances
-