Какова связь между идентификатором компонента и соответствующим объектом, который создается в Blueprint? - PullRequest
0 голосов
/ 03 апреля 2019

Я знаю, что реализация Blueprint, Aries Blueprint, использует свойство id для сохранения уникальности bean-компонентов в его реестре (пространстве имен) bean-компонентов. Но какова связь этого идентификатора с фактическими объектами, которые создаются? Можно ли получить или сохранить этот идентификатор в самом объекте?

Например, предположим, что я хотел бы быть эффективным и использовать идентификаторы бина в качестве частного поля в каждом из классов.

Мой класс Java Bean

public class Bean() {

   private String id;

   public String getId() {
    return id;
   }

   public void setId(String id) {
     this.id = id;
   }
}

Вот единственный способ, которым я знаю, как это сделать (кроме использования конструктора arg)

<bean id="bean01" class="Bean">
  <property name="name" value="bean01"/> <!-- Here I use a setter method -->
</bean>

Возможно ли удалить эту избыточность? Я там переменная представляющая "bean01"?

Свойства бобов

Документация по реализации Apache Aries Blueprint содержит следующее:

Бобам могут быть введены значения свойств. Инъекция выполняется сразу после того, как бин построен. В следующем примере создается компонент Account, а затем задается свойство description с использованием соглашения об именах Java Beans.

public class Account { 
public Account(long number) { ... } public String getDescription() { ... } }

   <bean id="accountOne" class="org.apache.aries.simple.Account">
       <argument value="1"/>
       <property name="description" value="#1 account"/>
   </bean>

Что это делает value=#1? Это не объясняется.

...