The Spring Framework

org.springframework.beans.factory.config
Class CustomEditorConfigurer

java.lang.Object
  extended by org.springframework.beans.factory.config.CustomEditorConfigurer
All Implemented Interfaces:
BeanClassLoaderAware, BeanFactoryPostProcessor, Ordered

public class CustomEditorConfigurer
extends Object
implements BeanFactoryPostProcessor, BeanClassLoaderAware, Ordered

BeanFactoryPostProcessor implementation that allows for convenient registration of custom property editors.

As of Spring 2.0, the recommended usage is to use custom PropertyEditorRegistrar implementations that in turn register any desired editors on a given registry. 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>

Alternative configuration example with custom editor instances, assuming inner beans for PropertyEditor instances:

 <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
   <property name="customEditors">
     <map>
       <entry key="java.util.Date">
         <bean class="mypackage.MyCustomDateEditor"/>
       </entry>
       <entry key="mypackage.MyObject">
         <bean id="myEditor" class="mypackage.MyObjectEditor">
           <property name="myParam"><value>myValue</value></property>
         </bean>
       </entry>
     </map>
   </property>
 </bean>

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.beans.PropertyEditor), DataBinder.registerCustomEditor(java.lang.Class, java.beans.PropertyEditor), BaseCommandController.setPropertyEditorRegistrars(org.springframework.beans.PropertyEditorRegistrar[]), BaseCommandController.initBinder(javax.servlet.http.HttpServletRequest, org.springframework.web.bind.ServletRequestDataBinder)

Field Summary
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
CustomEditorConfigurer()
           
 
Method Summary
 int getOrder()
          Return the order value of this object, with a higher value meaning greater in terms of sorting.
 void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
          Modify the application context's internal bean factory after its standard initialization.
 void setBeanClassLoader(ClassLoader beanClassLoader)
          Callback that supplies the bean class loader to a bean instance.
 void setCustomEditors(Map customEditors)
          Deprecated. as of Spring 2.0.7, in favor of setPropertyEditorRegistrars(org.springframework.beans.PropertyEditorRegistrar[])
 void setOrder(int order)
           
 void setPropertyEditorRegistrars(PropertyEditorRegistrar[] propertyEditorRegistrars)
          Specify the PropertyEditorRegistrars to apply to beans defined within the current application context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CustomEditorConfigurer

public CustomEditorConfigurer()
Method Detail

setOrder

public void setOrder(int order)

getOrder

public int getOrder()
Description copied from interface: Ordered
Return the order value of this object, with a higher value meaning greater in terms of sorting.

Normally starting with 0 or 1, with Ordered.LOWEST_PRECEDENCE indicating greatest. Same order values will result in arbitrary positions for the affected objects.

Higher value can be interpreted as lower priority, consequently the first object has highest priority (somewhat analogous to Servlet "load-on-startup" values).

Note that order values below 0 are reserved for framework purposes. Application-specified values should always be 0 or greater, with only framework components (internal or third-party) supposed to use lower values.

Specified by:
getOrder in interface Ordered
Returns:
the order value
See Also:
Ordered.LOWEST_PRECEDENCE

setPropertyEditorRegistrars

public void setPropertyEditorRegistrars(PropertyEditorRegistrar[] propertyEditorRegistrars)
Specify the PropertyEditorRegistrars to apply to beans defined within the current application context.

This allows for sharing PropertyEditorRegistrars with DataBinders, etc. Furthermore, it avoids the need for synchronization on custom editors: A PropertyEditorRegistrar will always create fresh editor instances for each bean creation attempt.

See Also:
ConfigurableBeanFactory.addPropertyEditorRegistrar(org.springframework.beans.PropertyEditorRegistrar)

setCustomEditors

public void setCustomEditors(Map customEditors)
Deprecated. as of Spring 2.0.7, in favor of setPropertyEditorRegistrars(org.springframework.beans.PropertyEditorRegistrar[])

Specify the custom editors to register via a Map, using the class name of the required type as the key and the PropertyEditor instance as the value.

Parameters:
customEditors - said Map of editors (can be null)
See Also:
ConfigurableBeanFactory.registerCustomEditor(java.lang.Class, java.beans.PropertyEditor)

setBeanClassLoader

public void setBeanClassLoader(ClassLoader beanClassLoader)
Description copied from interface: BeanClassLoaderAware
Callback that supplies the bean class loader to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean's InitializingBean.afterPropertiesSet() method or a custom init-method.

Specified by:
setBeanClassLoader in interface BeanClassLoaderAware
Parameters:
beanClassLoader - the owning class loader; may be null in which case a default ClassLoader must be used, for example the ClassLoader obtained via ClassUtils.getDefaultClassLoader()

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 interface BeanFactoryPostProcessor
Parameters:
beanFactory - the bean factory used by the application context
Throws:
BeansException - in case of errors

The Spring Framework

Copyright © 2002-2007 The Spring Framework.