Spring - Framework:在提取记录时给出异常



大家好,

在spring.xml文件中使用Map时,我得到以下异常。我的"spring.xml"文件包含以下信息,请告诉你是否还需要实现类:

<bean id="triangleMap" class="practice.spring.model.TriangleSet">
        <property name="points">
            <map>
                <entry key="PointA" value-ref="point1" />
                <entry key="PointB" value-ref="point2" />
                <entry key="PointC" value-ref="point3" />
            </map>
        </property>
    </bean>
    <bean name="point1" class="practice.spring.model.Point">
        <property name="x" value="0" />
        <property name="y" value="0" />
    </bean>
    <bean id="point2" class="practice.spring.model.Point">
        <property name="x" value="0" />
        <property name="y" value="10" />
    </bean>
    <bean id="point3" class="practice.spring.model.Point">
        <property name="x" value="0" />
        <property name="y" value="-10" />
    </bean>

给出如下异常:

        org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'triangleMap' defined in class path resource [spring.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.LinkedHashMap' to required type 'java.util.Set' for property 'points'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.util.LinkedHashMap] to required type [practice.spring.model.Point] for property 'points[0]': no matching editors or conversion strategy found
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
            at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
            at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
            at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
            at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
            at practice.spring.service.DrawingApp.main(DrawingApp.java:14)
        Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.LinkedHashMap' to required type 'java.util.Set' for property 'points'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.util.LinkedHashMap] to required type [practice.spring.model.Point] for property 'points[0]': no matching editors or conversion strategy found
            at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:462)
            at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:499)
            at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:493)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1371)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1330)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
            ... 11 more
        Caused by: java.lang.IllegalStateException: Cannot convert value of type [java.util.LinkedHashMap] to required type [practice.spring.model.Point] for property 'points[0]': no matching editors or conversion strategy found
            at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:231)
            at org.springframework.beans.TypeConverterDelegate.convertToTypedCollection(TypeConverterDelegate.java:520)
            at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:173)
            at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:447)
            ... 17 more

这是个小错误。我的错误在

那一行
<bean id="triangleMap" class="practice.spring.model.TriangleSet">

在这里,我指向TriangleSet,它有"Set"属性,但我正在传递Map实现。所以它抛出了一个错误

最新更新