Annotation Interface ResourcePropertySource
@PropertySource
annotation that has some limitations:
- The
@PropertySource
annotation can't meta-annotate the another annotation - The
@PropertySource
annotation can't control the order ofPropertySource
- The
@PropertySource
annotation can't beinherited
- The
PropertySource#value()
attribute does not support theresource
location wildcards - The
PropertySource#encoding()
attribute does not specify the default encoding for theresource
This annotation provides additional features not available with the standard PropertySource
, such as:
- Support for meta-annotation usage
- Control over the order in which property sources are added to Spring's Environment
- Inheritance through the use of the
Inherited
annotation - Support for resource location wildcards in the resource paths
- Ability to specify default encoding for property resources
Examples Usage
Basic Usage
To load a simple properties file from the classpath:
@ResourcePropertySource("classpath:/com/example/config/app.properties")
public class AppConfig {
}
Specifying Order
To control the precedence of this property source, you can use the attributes likebefore()
or first()
:
// Make this property source first in the list
@ResourcePropertySource(value = "classpath:/com/example/config/app.properties", first = true)
public class AppConfig {
}
Using Wildcards and Custom Comparator
When using wildcards to load multiple property files, you can also define the loading order via a custom comparator:
@ResourcePropertySource(
value = "classpath:/com/example/config/*.properties",
resourceComparator = MyCustomResourceComparator.class
)
public class AppConfig {
}
Ignoring Missing Resources
If the property file is optional, you can choose to ignore missing files:
@ResourcePropertySource(
value = "classpath:/com/example/config/app.properties",
ignoreResourceNotFound = true
)
public class AppConfig {
}
Encoding Support
You can also specify the encoding used when reading property files:
@ResourcePropertySource(
value = "classpath:/com/example/config/app.properties",
encoding = "ISO-8859-1"
)
public class AppConfig {
}
Custom PropertySourceFactory
To customize how the property source is created, provide your own implementation ofPropertySourceFactory
:
@ResourcePropertySource(
value = "classpath:/com/example/config/app.properties",
factory = MyCustomPropertySourceFactory.class
)
public class AppConfig {
}
- Since:
- 1.0.0
- Author:
- Mercy
- See Also:
-
PropertySource
PropertySource
Configuration
-
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionThe relative order after specifiedPropertySource
boolean
It indicates the property source is auto-refreshed when the configuration is changed.The relative order before specifiedPropertySource
A specific character encoding for the given resources.Class<? extends org.springframework.core.io.support.PropertySourceFactory>
Specify a customPropertySourceFactory
, if any.boolean
boolean
Indicate if a failure to find aproperty resource
should be ignored.Indicate the name of this property source.Class<? extends Comparator<org.springframework.core.io.Resource>>
Indicate the resources to be sorted whenvalue()
specifies the resource location wildcards or the same resource names with the different absolute paths.String[]
Indicate the resource location(s) of the property source file to be loaded.
-
Element Details
-
name
Indicate the name of this property source.- See Also:
-
PropertySource.getName()
Resource.getDescription()
- Default:
- ""
-
autoRefreshed
It indicates the property source is auto-refreshed when the configuration is changed.- Returns:
- default value is
false
- Default:
- false
-
first
Indicates currentPropertySource
is first order or not If specified ,before()
andafter()
will be ignored, or last order.- Returns:
- default value is
false
- Default:
- false
-
before
The relative order before specifiedPropertySource
If not specified , current
PropertySource
will be added last.If
first()
specified , current attribute will be ignored.- Returns:
- the name of
PropertySource
, default value is the empty string
- Default:
- ""
-
after
The relative order after specifiedPropertySource
If not specified , current
PropertySource
will be added last.If
first()
specified , current attribute will be ignored.- Returns:
- the name of
PropertySource
, default value is the empty string
- Default:
- ""
-
value
Indicate the resource location(s) of the property source file to be loaded.Both traditional and XML-based properties file formats are supported — for example,
"classpath:/com/myco/app.properties"
or"file:/path/to/file.xml"
.Resource location wildcards (e.g. **/*.properties) also are permitted;
${...} placeholders will be resolved against any/all property sources already registered with the
Environment
.Each location will be added to the enclosing
Environment
as its own property source, and in the order declared.- Default:
- {}
-
resourceComparator
@AliasFor(annotation=PropertySourceExtension.class) Class<? extends Comparator<org.springframework.core.io.Resource>> resourceComparatorIndicate the resources to be sorted whenvalue()
specifies the resource location wildcards or the same resource names with the different absolute paths.For example,
"classpath:/com/myco/*.properties"
, suppose there are two resources named "a.properties" and "b.properties" where two instances ofResource
will be resolved, they are the sources ofPropertySource
, thus it has to sort them to indicate the order ofPropertySource
that will be added to the enclosingEnvironment
.Default is
DefaultResourceComparator
- See Also:
- Default:
- io.microsphere.spring.config.env.support.DefaultResourceComparator.class
-
ignoreResourceNotFound
Indicate if a failure to find aproperty resource
should be ignored.true
is appropriate if the properties file is completely optional.Default is
false
.- Default:
- false
-
encoding
A specific character encoding for the given resources.Default is the property value of "file.encoding" if present, or "UTF-8"
- Default:
- "${file.encoding:UTF-8}"
-
factory
@AliasFor(annotation=PropertySourceExtension.class) Class<? extends org.springframework.core.io.support.PropertySourceFactory> factorySpecify a customPropertySourceFactory
, if any.By default, a default factory for standard resource files will be used.
Default is
DefaultPropertySourceFactory
- See Also:
-
DefaultPropertySourceFactory
ResourcePropertySource
- Default:
- org.springframework.core.io.support.DefaultPropertySourceFactory.class
-