2016-09-06 3 views
0

Как мы можем перевести следующий объект в весенний боб, чтобы мы могли сохранить точную функциональность? По функциональности я пытаюсь сосредоточиться на инициализации конструктора.Инициализация полей пружинных сил

class RealObject { 
    private String f1; 
    private String f2; 
    private String f3; 
    private int f4; 
    private int f5; 

    public RealObject(String f1, String f2, String f3, int f4, int f5) { 
     this.f1 = f1; 
     this.f2 = f2; 
     this.f3 = f3; 
     this.f4 = f4; 
     this.f5 = f5; 
    } 

    ... getters ... 
} 

Пружинный фасоль будет выглядеть

@Bean 
class RealObject { 
    private String f1; 
    private String f2; 
    private String f3; 
    private int f4; 
    private int f5; 

    ... getters ... 
} 

Проблема с этим боба является то, что он никогда не заставит меня дать параметры мне нужно в моем объекте. Я могу выполнить ручную проверку для каждого входа, но если у вас слишком много ... Это не будет элегантно.

Какие у меня решения?

Позже редактирование: мне нужно передать значения во время выполнения.

+0

[Потенциальный дубликат] (HTTP://stackoverflow.com/questions/7492652)? – Actorclavilis

+0

Поскольку вы используете Spring (или любое другое решение DI), это не означает, что все должно быть управляемым компонентом. Зачем вам нужен этот класс для управления весной? –

ответ

0

Вы можете использовать @Autowired и @Value вместе конструктору

@Autowired 
public RealObject(@Value("#{property.f1}") String f1, 
        @Value("#{property.f2}") String f2, 
        ...) { 

} 

В этом случае вам нужно внешние свойства, чтобы присвоить значения f1, f2 ...

+0

Я не хочу получать значения из свойств. Мне нужно как-то передать их во время работы. – tzortzik

+0

Вы не можете со строками. Вы можете создать объект, содержащий все эти строки, и ввести этот объект. –

+0

Дополнительно. Если вам нужно передать их во время выполнения, зачем вам создавать экземпляр объекта через весну? –

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