When you register a PropertyEditor in application context, you are providing the converter from String to some type, in your case the JodaTime type. The bean holding the type, (Contact) don't matter. The application context will use your ContactPropertyEditor editor any time that need to set a property of type JodaTime as String on any bean.
So ContactPropertyEdit it's a bad name. It should be JodaTimePropertyEditor.
If you want a real ContactPropertyEditor, it should convert Strings to Contacts. For example:
<bean id="someBeanHoldingAContact" class="someBeanClass">
<property name="contact" value="Hendrix, Jimi, 1942-11-27, http://www.jimihendrix.com" />
and the ContactPropertyEditor should use the string value to create the contact.
-Thanks. I get it now. So this is like a global editor. Any bean that is using JodaTime will be affected. There is no way do it selectively. Say I only want to apply propertyEditor on a specific Bean only.
No, the container don't check the target class when looking for property editors. But you could implement the conversion in the bean itself or inject the object returned by other bean method deployed in the container.