2

我有一个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..

谢谢。

4

3 回答 3

1

从技术上讲,您可以尝试将 enum 注册为这样的 bean:

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

然后像这样注入它:

@Autowired("inProgress") Status status.

但是这样做没有任何意义

于 2013-03-15T13:23:53.057 回答
1

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

只能从 Enum 声明本身调用 Enum 构造函数。

当然你可以使用这个 Enum 的实例,即使在 Spring 中,但你不能创建它:

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

<bean name="entity" class="package.Entity">
   <property name="status" value="IN_PROCESS" />
</bean>
于 2013-03-15T12:32:23.933 回答
0

在这里查看:http <util:constant/>:
//static.springsource.org/spring/docs/3.0.x/reference/xsd-config.html

于 2013-03-15T13:27:19.830 回答