Возможно ли внедрение конструктора в классах конфигурации Spring?

Если у меня есть класс конфигурации Spring (т.е. класс, аннотированный @Configuration), могу ли я использовать внедрение конструктора?

В настоящее время, если я добавляю один, я получаю сообщение об отсутствии конструктора по умолчанию, и если я добавляю конструктор по умолчанию, он использует его, а не перегруженный, что на самом деле не помогает.


person PaulNUK    schedule 07.03.2016    source источник
comment
Да и нет... Если вы используете моментальный снимок Spring Boot 1.4, то вы можете получить его только для простых случаев! в более ранних версиях этого нет. (Эта возможность была добавлена ​​в Spring 4.3).   -  person M. Deinum    schedule 07.03.2016
comment
Спасибо, Мартин, до тех пор я продолжу инъекцию сеттеров.   -  person PaulNUK    schedule 07.03.2016


Ответы (2)


Существует отчет об ошибке об этом ограничении. Это будет исправлено с Spring 4.3.

Обратите внимание, что еще один отчет об ошибке (еще не исправлено сегодня исправлено в 4.3-RC1) сообщают о проблеме при использовании этой очень новой функции и внедрении дженериков в конструктор класса @Configuration.

person ben75    schedule 07.03.2016

В Spring 4.3 вы можете использовать org.springframework.beans.factory.ObjectProvider в конструкторах аннотированных классов @Configuration для внедрения bean-компонентов. Например:

@Configuration
public class SimpleBean {
  private final InnerBean prop1;
  public Simple Bean(ObjectProvider<InnerBean> innerBeanProvider) {
     prop1 = innerBeanProvider.getObject();
  }      
}
person SunLiWei    schedule 28.09.2016