注入枚举(春天)

时间:2013-03-15 11:34:42

标签: java spring

我有一个enum,我需要用spring bean注入它。

我的枚举是:

public enum Status {


IN_PROCESS(1,"In process"),
DONE(0,"Successful"), 
CANNOT_DONE(2,"Unsuccessful");

private final int code;
private final String description;

private Status(int code, String description){
    this.code = code;
    this.description = description;
}

public int getCode() {
    return code;
}


public String getDescription() {
    return description;
}

}

我的bean.xml对于enum ..

应该是什么样子

感谢。

3 个答案:

答案 0 :(得分:1)

你不能通过它的构造函数从这个枚举之外创建一个枚举(不是在java而不是在Spring中),因为枚举值是常量!

Enum构造函数只能从Enum declarion itselve中调用。

当然你可以使用这个Enum的一个实例,即使是在Spring中,但你无法创建它:

public Class Entity {    
    public Entity(Status status) {...}
}

<bean name="entity" class="package.Entity">
   <property name="status" value="IN_PROCESS" />
</bean>

答案 1 :(得分:1)

从技术上讲,你可能会尝试将枚举注册为像这样的bean:

@Configuration
class EnumProducer {
   @Bean
   Status inProgress() {
        return Status.IN_PROGRESS;
   }
}

然后将其注入:

@Autowired("inProgress") Status status.

没有任何意义这样做。

答案 2 :(得分:0)