Как выполнить инъекцию зависимостей на основе конструктора с помощью Spring с использованием аннотаций?

Итак, если мне нужно поместить некоторые примитивные значения в конструктор, как мне это сделать?

    @Autowired
public CustomBean(String name, @Qualifier("SuperBean") SuperBean superBean) {
    super();
    this.superBean = superBean;
    this.name = name;
}

Например, здесь я определяю, что superBean имеет квалификатор «SuperBean», но я также хотел бы знать, как можно использовать аннотации для установки значения имени здесь?

Я знаю, что это возможно с конфигурацией xml, но я хочу знать, как это сделать и с аннотациями:

<bean id="CustomXmlBean" class="org.arturas.summerfav.beans.CustomXmlBean">
        <constructor-arg name="name" type="String" value="The Big Custom XML Bean" />
        <constructor-arg>
            <bean id="SuperBean" class="org.arturas.summerfav.beans.SuperBean" />
        </constructor-arg>
    </bean>

Хорошо, как мне ввести значения для String, int и других универсальных типов?


person Arturas M    schedule 08.08.2013    source источник


Ответы (1)


Вот один из способов сделать это:

@Component 
public class YourBean { 
    @Autowired
    public YourBean(@Value("${prop1}") String arg1, @Value("${prop2}") String arg2) { 
        // rest of the code
    } 
} 
person Santosh    schedule 08.08.2013
comment
Большое спасибо, я искал в Google и искал всю главу 3 IoC Spring, но не смог найти это @Value, интересно, почему они не включили его туда, это просто палец вниз для документов Spring. .. Я использовал это с @Value (какой-то текст), можете ли вы объяснить мне более подробно, что такое ${prop1}? это какое-то значение или переменная, определенная где-то, можете ли вы сказать мне, как ее использовать? - person Arturas M; 08.08.2013
comment
@ArturasM, в ${prop1}, prop1 — это ключ, определенный в файле свойств (загружается через стандартный пружинный механизм). - person Santosh; 08.08.2013
comment
Спасибо, думаю, теперь понял. - person Arturas M; 08.08.2013