春天的贬值警告

时间:2012-12-08 11:06:26

标签: java spring warnings

当应用程序启动时,我会收到警告消息(数十次):

Dec 08, 2012 5:10:41 PM org.springframework.beans.TypeConverterDelegate findDefaultEditor
WARNING: PropertyEditor [sun.beans.editors.EnumEditor] found through deprecated global PropertyEditorManager fallback - consider using a more isolated form of registration, e.g. on the BeanWrapper/BeanFactory!
谷歌表明这是非常常见的消息,但不幸的是没有说明它为什么会发生。我该如何避免这些警告?

Spring version 2.5.6。

2 个答案:

答案 0 :(得分:7)

添加自定义编辑器修复警告:

public final class EnumPropertyEditor extends PropertyEditorSupport {

    public EnumPropertyEditor() {
    }

    @Override
    public String getAsText() {
       return (String) getValue();
    }

    @Override
    public void setAsText(String text) throws IllegalArgumentException {
       setValue(text);
   }
}

在配置中:

<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
    <property name="customEditors">
        <map>
            <entry key="java.lang.Enum">
                <bean class="package.EnumPropertyEditor">
                </bean>
            </entry>
        </map>
    </property>
</bean>

答案 1 :(得分:3)

它告诉你它正在使用一个不推荐使用的回退方法来查找枚举的属性编辑器,而不是使用在Spring中注册的属性编辑器,并且你应该考虑使用枚举的专用属性编辑器并使用Spring注册它,使用the documentation中描述的机制。

如果你不这样做,你的代码在Spring的未来版本中无法正常工作,因为Spring不再使用这种回退机制了。

那就是说,3.1.x版仍然有这种回退机制。