使用 Spring 注入枚举
我正在尝试使用
这就是我所做的。在我的 spring 配置中,我遵循以下条目
<util:constant id="Content" static-field="com.test.taxonomy.model.MetadataTypeEnum.CONTENT_GROUP" />
<util:constant id="Category" static-field="com.test.taxonomy.model.MetadataTypeEnum.CATEGORY" />
<bean id="ADSKContentGroup" class="com.test.taxonomy.model.ADSKContentGroup" scope="prototype">
<property name="name" ref="Content" />
</bean>
Here,我尝试利用 Enum ADSKContentGroup 注入到我的 bean 的 (ADSKContentGroup) ame 属性中。
这是枚举:
public enum MetadataTypeEnum {
CONTENT_GROUP ("ADSKContentGroup"),
private String metadataType;
private MetadataTypeEnum(String metadataType) {
this.metadataType = metadataType;
}
public String getMetadataType() {
return this.metadataType;
}
}
这是 bean:
public class ADSKContentGroup extends Metadata {
public ADSKContentGroup(){
}
}
bean 从具有名称属性设置器的基类扩展
这是类定义:
public class Metadata {
private MetadataTypeEnum name;
private String value;
public String getName() {
return name.getMetadataType();
}
public void setName(MetadataTypeEnum name) {
this.name = name;
}
}
在运行时,我收到以下异常
ERROR com.test.taxonomy.plugin.TaxonomyPluginImpl - Error in creating metadata mapping :Error creating bean with name 'ADSKContentGroup' defined in ServletContext resource [/WEB-INF/beans.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [com.test.taxonomy.model.MetadataTypeEnum] to required type [java.lang.String] for property 'name'; nested exception is java.lang.IllegalArgumentException: Original must not be null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ADSKContentGroup' defined in ServletContext resource [/WEB-INF/beans.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [com.test.taxonomy.model.MetadataTypeEnum] to required type [java.lang.String] for property 'name'; nested exception is java.lang.IllegalArgumentException: Original must not be null
不确定我的方法出了什么问题。
任何指针都受到高度赞赏。
- 谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的
Metadata
类是设计不当的 JavaBean,它不符合规范:setter 使用MetadataTypeEnum
类型的参数,但 getter 的返回类型为字符串。
Your
Metadata
class is ill-designed JavaBean, it does not conform to the spec: The setter uses a parameter of typeMetadataTypeEnum
, but the return type of the getter isString
.