Apache Geronimo 中的依赖注入,第 2 部分: 下一代
2009-11-11 00:00:00 来源:WEB开发网魔法属性
Geronimo 架构定义了特殊的属性类型,叫做魔法属性。魔法属性装入的值取决于装入 GBean 的环境。例如,魔法属性 kernel 指向内核,它自动被框架注入到类中。类似地,ClassLoader 属性注入当前类装入器,ObjectName 属性把当前名称注入 GBean。 清单 4 显示了 kernel 属性的用法,它被自动注入到定义生命周期的类中。所有魔法属性的完整列表位于内核的 GBeanMBean 类 中。魔法属性不是持久性的,因为它们与启动环境绑定在一起。
GBean 中的 DI
清单 3 所示的 customer 类是使用 setter 注入的类的良好示例。接下来,将看到构造函数注入的示例,以及 Geronimo 的部署计划定义容器注入代码的方式。正如在本系列的 第一篇文章 中解释过的,构造函数注入表明框架会提供类在初始化时需要的构造函数参数。
单一引用
许多 DI 的支持者愿意采用构造函数注入,因为这意味着注入的类永远不会出现依赖项不存在的情况。清单 5 显示的 GBean 被定义成使用构造函数注入来提供 Customer 引用。
清单 5. 使用构造函数注入的 HumanResources 类package com.nealford.articles.di_geronimo;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class HumanResources implements GBeanLifecycle {
private static Log log = LogFactory.getLog(HumanResources.class);
private Customer customer1;
private static final GBeanInfo GBEAN_INFO;
static {
GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(
"HumanResources",
HumanResources.class);
// attributes
infoFactory.addReference("Customer", Customer.class);
// operations
infoFactory.setConstructor(new String[]{"Customer1"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
public HumanResources(Customer customer1) {
this.customer1 = customer1;
}
public void doStart() throws Exception {
log.info("Starting HR GBean");
}
public void doStop() throws Exception {
log.info("Stopping HR GBean");
}
public void doFail() {
log.info("HR GBean failure!");
}
}
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››apache rewrite将指定URL转向指定的几个服务器
- ››apache配置文件httpd.comf部分参数说明
- ››Apache+Mysql+PHP+phpMyAdmin+Mac OS X 10.7 Lion...
- ››apache+tomcat负载均衡_项目实例
- ››apache mysql php 源码编译使用
- ››Apache添加mod_aspdotnet.so支持ASP.NET配置指南
- ››Apache中改变php.ini的路径
- ››Apache2.2与Tomcat6整合及虚拟主机配置
- ››Apache+php+mysql在windows下的安装与配置图解
- ››Apache+Subversion完美结合,CentOS下实现版本控制...
- ››Apache HTTPServer2.2.16 发布
更多精彩
赞助商链接