是否有必要在 osgi 蓝图文件的 bean 定义中添加 getter 和 setter



我基于 Apache karaf osgi 和依赖注入的项目是通过蓝图文件完成的。我想知道这种豆子是否真的需要吸气剂和二传手。我在没有 getter 和 setter 方法的情况下对其进行了测试,它有效,但不确定这是否遵循最佳实践。我的动机只是从该文件中减少 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"/>

蓝图规范仅定义通过 JavaBeans 样式的 setter 方法注入属性。

字段注入是特定于 Karaf 中使用的蓝图的 Apache Aries 实现的扩展。因此,它不适用于其他蓝图实现。

如果您希望蓝图容器定义可以跨实现移植,那么最好使用 JavaBeans 样式的 setter 方法。如果你不关心这个,那么你可以使用字段注入,而忘记二传手方法。

但是,请注意,保留 setter 方法的另一个原因可能是出于单元测试目的。

最新更新