|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
@Target(value=TYPE) @Retention(value=RUNTIME) @Documented public @interface PropertySource
Annotation providing a convenient and declarative mechanism for adding a
PropertySource
to Spring's
Environment
. To be used in
conjunction with @Configuration
classes.
Given a file app.properties
containing the key/value pair
testbean.name=myTestBean
, the following @Configuration
class
uses @PropertySource
to contribute app.properties
to the
Environment
's set of PropertySources
.
@Configuration @PropertySource("classpath:/com/myco/app.properties") public class AppConfig { @Autowired Environment env; @Bean public TestBean testBean() { TestBean testBean = new TestBean(); testBean.setName(env.getProperty("testbean.name")); return testBean; } }Notice that the
Environment
object is @Autowired
into the
configuration class and then used when populating the TestBean
object. Given
the configuration above, a call to testBean.getName()
will return "myTestBean".
.properties
file, the last @PropertySource
annotation processed will 'win' and override.
For example, given two properties files a.properties
and
b.properties
, consider the following two configuration classes
that reference them with @PropertySource
annotations:
@Configuration @PropertySource("classpath:/com/myco/a.properties") public class ConfigA { } @Configuration @PropertySource("classpath:/com/myco/b.properties") public class ConfigB { }The override ordering depends on the order in which these classes are registered with the application context.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(ConfigA.class); ctx.register(ConfigB.class); ctx.refresh();In the scenario above, the properties in
b.properties
will override any
duplicates that exist in a.properties
, because ConfigB
was registered
last.
In certain situations, it may not be possible or practical to tightly control
property source ordering when using @ProperySource
annotations. For example,
if the @Configuration
classes above were registered via component-scanning,
the ordering is difficult to predict. In such cases - and if overriding is important -
it is recommended that the user fall back to using the programmatic PropertySource API.
See ConfigurableEnvironment
and * MutablePropertySources
Javadoc for details.
Configuration
,
PropertySource
,
ConfigurableEnvironment.getPropertySources()
,
MutablePropertySources
Required Element Summary | |
---|---|
String[] |
value
Indicate the resource location(s) of the properties file to be loaded. |
Optional Element Summary | |
---|---|
String |
name
Indicate the name of this property source. |
Element Detail |
---|
public abstract String[] value
"classpath:/com/myco/app.properties"
or
"file:/path/to/file"
. Note that resource location wildcards
are not permitted, and that each location must evaluate to exactly one
.properties
resource. Each location will be added to the
enclosing Environment
as its own property source, and in the order
declared.
public abstract String name
PropertySource.getName()
,
Resource.getDescription()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |