Default implementation of the {@link PropertiesPersister} interface.Follows the native parsing of
java.util.Properties
.
Allows for reading from any Reader and writing to any Writer, for example to specify a charset for a properties file. This is a capability that standard java.util.Properties
unfortunately lacks up until JDK 1.5: You can only load files using the ISO-8859-1 charset there.
Loading from and storing to a stream delegates to Properties.load
and Properties.store
, respectively, to be fully compatible with the Unicode conversion as implemented by the JDK Properties class. On JDK 1.6, Properties.load/store
will also be used for readers/writers, effectively turning this class into a plain backwards compatibility adapter.
The persistence code that works with Reader/Writer follows the JDK's parsing strategy but does not implement Unicode conversion, because the Reader/Writer should already apply proper decoding/encoding of characters. If you use prefer to escape unicode characters in your properties files, do not specify an encoding for a Reader/Writer (like ReloadableResourceBundleMessageSource's "defaultEncoding" and "fileEncodings" properties).
As of Spring 1.2.2, this implementation also supports properties XML files, through the loadFromXml
and storeToXml
methods. The default implementations delegate to JDK 1.5's corresponding methods, throwing an exception if running on an older JDK. Those implementations could be subclassed to apply custom XML handling on JDK 1.4, for example.
@author Juergen Hoeller
@since 10.03.2004
@see java.util.Properties
@see java.util.Properties#load
@see java.util.Properties#store
@see org.springframework.context.support.ReloadableResourceBundleMessageSource#setPropertiesPersister
@see org.springframework.context.support.ReloadableResourceBundleMessageSource#setDefaultEncoding
@see org.springframework.context.support.ReloadableResourceBundleMessageSource#setFileEncodings