Как сделать инъекцию конструктора Spring с несколькими параметрами - PullRequest
3 голосов
/ 07 октября 2011

Предположим, у нас есть класс A и B. внутри конструктора B. необходим не только A, но и некоторые другие строковые / логические значения.например,

@Componenet(value = "B")
@DependsOn(value = "A")
public class B{
    ...
}
public B(A a_instance, String name1, String name2, boolean b1){
    ...
}

Я знаю, используя аннотации.но не зная точно, что делать с этими строковыми / логическими значениями?

1 Ответ

5 голосов
/ 07 октября 2011

Ваш вопрос не совсем понятен. Ваш конструктор B, по-видимому, находится за пределами класса B. Кроме того, если предположить, что других конструкторов нет, то у вас ничего не получится, потому что Spring будет искать конструктор по умолчанию. Я думаю, что вы спрашиваете, что делать, если вы хотите @Autowired этот конструктор, чтобы получить String и логические значения в нем. Если это так, вы хотите что-то вроде этого:

@Component
public class B {
    @Autowired
    public B(A a,
             @Value("${some.property.1}") String name1,
             @Value("${some.property.2}") String name2,
             @Value("${some.property.3}") boolean b1) {
        ...
    }
}

В этой ситуации @Value действует примерно так же, как @Qualifier, если бы у вас было несколько бинов типа А.

...