Нужно ли добавлять getter и setter в определение bean-файла osgi blueprint file? - PullRequest
0 голосов
/ 10 января 2019

Мой проект, основанный на Apache karaf osgi и внедрении зависимостей, выполняется через файл проекта. Я хотел бы знать, действительно ли для таких бинов требуются геттер и сеттер. Я проверил это без методов получения и установки, и это работает, но не уверен, что это следует передовой практике. Мой мотив - просто уменьшить LOC из этого файла.

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"..>
.
.
<bean id="emailServiceImpl" class="com.mycompany.EmailServiceImpl">
  <property name="applicationEnvironment" value="$(staging)" />
.
.
<bean id="orderDispatcherImpl" class="com.myCompany.OrderDispatcherImpl" 
  ext:field-injection="true" init-method="init">
   <property name="emailService" ref="emailServiceImpl"/>

1 Ответ

0 голосов
/ 14 января 2019

Спецификация Blueprint определяет только внедрение свойств с помощью методов установки в стиле JavaBeans.

Инжекция поля - это расширение, специфичное для реализации Blueprint в Apache Aries, используемой в Karaf. Поэтому он не будет работать в других реализациях Blueprint.

Если вы хотите, чтобы ваше определение контейнера проекта было переносимым между реализациями, то было бы лучше использовать методы установки в стиле JavaBeans. Если вас это не волнует, вы можете использовать инжекцию поля и забыть о методах установки.

Тем не менее, обратите внимание, что еще одна причина сохранить методы установки может быть в целях модульного тестирования.

...