WEB开发网
开发学院软件开发Java 从对象创建和引用小议解耦 阅读

从对象创建和引用小议解耦

 2010-07-12 00:00:00 来源:WEB开发网   
核心提示: 清单 6. 计算器实现方式六 (WebBeans)importjavax.inject.Inject;publicclassCalculatorUI{@InjectprivateExpressionEvaluatorexpressionEvaluator;publicCalculatorUI()

清单 6. 计算器实现方式六 (WebBeans)

import javax.inject.Inject; 
public class CalculatorUI { 
 
  @Inject 
  private ExpressionEvaluator expressionEvaluator; 
 
  public CalculatorUI() { 
  } 
 
  public String evaluate(String expression) { 
    if (expression == null || expression.isEmpty()) { 
      throw new IllegalArgumentException("[" + expression + 
        "] is not a valid expression"); 
    } 
    return expressionEvaluator.evaluate(expression); 
  } 
} 

如 清单 6 所展示,CalculatorUI 类中出现了一个 Inject 标识,在 JSR-299 中使用其标识注入点,即容器会在运行时对其执行注入操作。该标识可以标注在类成员变量,构造函数以及普通函数上。那么 Web Beans 容器是如何知道将哪个实例注入?其是通过如下两个标准检索对应的实现:

实现类必需具备注入参数所要求的匹配类型,以本例而言,实现类必需实现 ExpressionEvaluator 接口。事实上针对不同类型的 Web Beans 之间规则略有差别,详细情况请参照 JSR-299 规范。

实现类具备所有注入点所要求的 Qualifier。在 JSR-299 规范中,允许用户自定义匹配标识,容器在检索实现类时会校验注入点参数和实现类是否具有相同 Qualifer。在本例中,并未显示定义具体的 Qualifier,则默认为 Default 类型,因为我们的计算器应用只包含一个 ExpressionEvaluator 接口的实现。如果有多个,则需要自定义 Qualifier 以确保唯一匹配。如 清单 7 所示:

上一页  3 4 5 6 7 8 9 10  下一页

Tags:对象 创建 引用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接