Инъекция полей бобовых - PullRequest
       29

Инъекция полей бобовых

10 голосов
/ 04 октября 2010

Использование Spring IoC позволяет устанавливать свойства bean-компонентов, доступные через сеттеры:

public class Bean {
    private String value;
    public void setValue(String value) {
        this.value = value;
    }
}

И определение bean-компонента:

<bean class="Bean">
    <property name="value" value="Hello!">
</bean>

Существуют ли какие-либо плагины / классы для Spring Framework, которые позволяют напрямую выставлять поля bean-компонентов как свойства без определения установщиков? Примерно так с тем же определением бина:

public class Bean {
    @Property
    private String value;
}

Ответы [ 3 ]

6 голосов
/ 04 октября 2010

Вы можете:

  • используйте аннотацию @Value и введите свойство (используя язык выражений)
  • взгляните на Project Lombok , который позволит вам пропустить все сеттеры и геттеры (и не только)
5 голосов
/ 04 октября 2010

Spring поддерживает введение полей на основе аннотаций из коробки для аннотации JSR-250 @Resource.Собственные Spring @Autowired и JSR 330 @Inject также работают .

Вам просто нужно добавить эту строку в ваш context.xml :

<context:annotation-config/>

Ссылка:

1 голос
/ 29 марта 2014

То, что вы просите, невозможно.Spring подписывается на соглашение по конфигурации.Так что ожидается, что будут сеттеры и геттеры.Хотя прямой впрыск поля возможен с Spring;и Spring использует Reflection для достижения этой цели, Spring не предусматривает реверсирование этого процесса для использования Reflection для доступа к полям без установщиков или получателей.Даже реализация Spring AOP предполагает найти методы для структурирования своих прокси.

...