从对象创建和引用小议解耦
2010-07-12 00:00:00 来源:WEB开发网清单 7. 自定义 Qualifer
SimpleExpressionEvaluator.java
@Qualifier
@Target( { ElementType.TYPE, ElementType.METHOD,
ElementType.PARAMETER, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface SimpleExpressionEvaluator {
}
CalculatorUI.java
import javax.inject.Inject;
public class CalculatorUI {
@Inject
@SimpleExpressionEvaluator
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);
}
}
ExpressionEvaluatorImpl.java
@SimpleExpressionEvaluator
public class ExpressionEvaluatorImpl implements ExpressionEvaluator {
public String evaluate(String expression) {
......
}
}
与基于前面基于 Spring 的实现方式相比,两者均是使用对象注入技术,只是如何定义 Bean 对象之间的关联不一样,前者是使用 XML 配置文件,而后者则是通过标识。当然,Web Beans 的优势之一是类型安全。在使用 Spring 的 XML 配置时,不同 Bean 对象之间的注入是通过其 Id 实现的。例如在 清单 5所示的配置文件中,<ref> 元素用于指定目标注入实例对象。而从上述 WebBeans 的检索规则中可以确保注入操作的类型安全性,同时在部署过程中即可执行相关检测。
更多精彩
赞助商链接