Class CustomEditorConfigurer
- java.lang.Object
- org.springframework.beans.factory.config.CustomEditorConfigurer
- All Implemented Interfaces:
BeanFactoryPostProcessor
,Ordered
public class CustomEditorConfigurer extends Object implements BeanFactoryPostProcessor, Ordered
BeanFactoryPostProcessor
implementation that allows for convenient registration of customproperty editors
.In case you want to register
PropertyEditor
instances, the recommended usage as of Spring 2.0 is to use customPropertyEditorRegistrar
implementations that in turn register any desired editor instances on a givenregistry
. Each PropertyEditorRegistrar can register any number of custom editors.<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="propertyEditorRegistrars"> <list> <bean class="mypackage.MyCustomDateEditorRegistrar"/> <bean class="mypackage.MyObjectEditorRegistrar"/> </list> </property> </bean>
It's perfectly fine to register
PropertyEditor
classes via thecustomEditors
property. Spring will create fresh instances of them for each editing attempt then:<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="java.util.Date" value="mypackage.MyCustomDateEditor"/> <entry key="mypackage.MyObject" value="mypackage.MyObjectEditor"/> </map> </property> </bean>
Note, that you shouldn't register
PropertyEditor
bean instances via thecustomEditors
property asPropertyEditors
are stateful and the instances will then have to be synchronized for every editing attempt. In case you need control over the instantiation process ofPropertyEditors
, use aPropertyEditorRegistrar
to register them.Also supports "java.lang.String[]"-style array class names and primitive class names (e.g. "boolean"). Delegates to
ClassUtils
for actual class name resolution.NOTE: Custom property editors registered with this configurer do not apply to data binding. Custom editors for data binding need to be registered on the
DataBinder
: Use a common base class or delegate to common PropertyEditorRegistrar implementations to reuse editor registration there.- Since:
- 27.02.2004
- Author:
- Juergen Hoeller
- See Also:
PropertyEditor
,PropertyEditorRegistrar
,ConfigurableBeanFactory.addPropertyEditorRegistrar(org.springframework.beans.PropertyEditorRegistrar)
,ConfigurableBeanFactory.registerCustomEditor(java.lang.Class<?>, java.lang.Class<? extends java.beans.PropertyEditor>)
,DataBinder.registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)
Field Summary
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor Summary
Constructors Constructor Description CustomEditorConfigurer()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getOrder()
Get the order value of this object.void
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
Modify the application context's internal bean factory after its standard initialization.void
setCustomEditors(Map<Class<?>,Class<? extends PropertyEditor>> customEditors)
Specify the custom editors to register via aMap
, using the class name of the required type as the key and the class name of the associatedPropertyEditor
as value.void
setOrder(int order)
void
setPropertyEditorRegistrars(PropertyEditorRegistrar[] propertyEditorRegistrars)
Specify thePropertyEditorRegistrars
to apply to beans defined within the current application context.
Constructor Detail
CustomEditorConfigurer
public CustomEditorConfigurer()
Method Detail
setOrder
public void setOrder(int order)
getOrder
public int getOrder()
Description copied from interface:Ordered
Get the order value of this object.Higher values are interpreted as lower priority. As a consequence, the object with the lowest value has the highest priority (somewhat analogous to Servlet
load-on-startup
values).Same order values will result in arbitrary sort positions for the affected objects.
- Specified by:
getOrder
in interfaceOrdered
- Returns:
- the order value
- See Also:
Ordered.HIGHEST_PRECEDENCE
,Ordered.LOWEST_PRECEDENCE
setPropertyEditorRegistrars
public void setPropertyEditorRegistrars(PropertyEditorRegistrar[] propertyEditorRegistrars)
Specify thePropertyEditorRegistrars
to apply to beans defined within the current application context.This allows for sharing
PropertyEditorRegistrars
withDataBinders
, etc. Furthermore, it avoids the need for synchronization on custom editors: APropertyEditorRegistrar
will always create fresh editor instances for each bean creation attempt.
setCustomEditors
public void setCustomEditors(Map<Class<?>,Class<? extends PropertyEditor>> customEditors)
Specify the custom editors to register via aMap
, using the class name of the required type as the key and the class name of the associatedPropertyEditor
as value.
postProcessBeanFactory
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
Description copied from interface:BeanFactoryPostProcessor
Modify the application context's internal bean factory after its standard initialization. All bean definitions will have been loaded, but no beans will have been instantiated yet. This allows for overriding or adding properties even to eager-initializing beans.- Specified by:
postProcessBeanFactory
in interfaceBeanFactoryPostProcessor
- Parameters:
beanFactory
- the bean factory used by the application context- Throws:
BeansException
- in case of errors