2013-03-15 2 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"> <конструктор-Arg значение = "DONE"> и получил эту ошибку: Неудовлетворенной зависимости, выраженную через аргумент конструктора с индексом 1 типа [Int]: неоднозначным конструктором типов аргументов – tural

+0

кажется, вы боб конструктор принимает ИНТАС argumen t, а не статус. Или что он принимает два аргумента, а не один. Исправьте это. И покажи нам код бобов. –

+0

Что такое смысл для ввода enum? –

ответ

1

Вы не можете создать Enum через свой конструктор извне этого Enum (не в java, а не в Spring), потому что значения Enum являются константами!

Конструктор Enum может быть вызван только из объявления Enum itselve.

Конечно, вы можете использовать экземпляр этого класса Enum, даже весной, но вы не можете создать его:

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

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

Технически вы можете попытаться зарегистрировать перечисление как боб, как это:

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

, а затем вводит его любит:

@Autowired("inProgress") Status status. 

Но нет никакого смысла для этого.

Смежные вопросы