2013-03-15 156 views
2

我有一个enum,我需要注入春豆。注入枚举(春季)

我的枚举是:

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 ..

感谢。

+0

我尝试这一个: <豆ID = “statusBean” 类= “entity.Status”> <构造精氨酸值= “DONE”> 和得到这个错误: 不满意的依赖,通过构造函数的参数表示与类型[INT]指标1:不明确的构造函数参数类型 – tural 2013-03-15 11:46:52

+0

看来你豆构造函数采用一个int变元吨,而不是一个地位。或者说它需要两个参数而不是一个。修复。并向我们​​展示bean的代码。 – 2013-03-15 11:48:16

+0

注入enum有什么意义? – 2013-03-15 12:36:58

回答

1

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

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

当然你也可以使用这个枚举,即使是在春天的一个实例,但你不能创建它:

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

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

从技术上讲,你可以尝试注册枚举作为这样一个bean:

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

,然后注入其想:

@Autowired("inProgress") Status status. 

没有任何意义这样做。