分享
 
 
 

在WebWork中实现IoC(2)

王朝java/jsp·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

2、XWork的组件体系结构

(1)编写组件类

在XWork中,组件类可以是任何你想要做的。唯一的限制就是需要有一个缺省的构造函数,以便XWork在需要时进行实例化。作为选项,组件类可以实现Intializable和/或Disposable接口,以便在创建之后以及销毁之前,可以接收生命周期事件,就象下面展示的一样:

public class MyComponent implements Intializable, Disposable {

public void init () {

//do initialization here

}

public void dispose() {

//do any clean up necessary before garbage collection of this component

}

}

(2)组件依赖关系

一个不明显的特性就是可能组件依赖于另外一个组件。例如,ExchangeRateService描述为依赖于一个Configuration组件,那么,XWork会在ExchangeRateService实例化后,将Configuration组件传给ExchangeRateService实例。XWork会自动按正确的顺序初始化组件。

如果A是一个Action或组件,依赖于B和C,而B又依赖于C,则ComponentManager会按下面的顺序处理:

l 实例化C,如果实现Intializable接口就调用init();

l 实例化B,使用enabler方法设置C供B使用;

l 如果B实现Intializable接口就调用init();

l 实例化A,使用enabler方法设置B供A使用;

如果B和C需要重用,使用enabler方法传递实例,而不是新建实例。

(3)编写enablers

enabler是包含接收单个参数的一个方法的接口。参数可以是要激活的组件类或其超类。下面是一个ExchangeRateAware的例子:

public interface ExchangeRateAware {

public void setExchangeRateService(ExchangeRateService exchangeRateService);

}

(4)编写“Enabler-aware”Action

Action类需要实现相关的enabler接口,以便XWork在Action执行之前调用enabler方法传递组件实例给Action,下面是一个简单的例子:

public class MyAction extends ActionSupport implements ExchangeRateAware {

ExchangeRateService ers;

public void setExchangeRateService(ExchangeRateService exchangeRateService) {

ers = exchangeRateService;

}

public String execute() throws Exception {

System.out.println("The base currency is " + ers.getBaseCurrency());

}

}

如果对象不是Action或组件,你可以调用componentManager. initializeObject(enabledObject);显式的告诉XWork提供激活的组件。

(5)使用外部引用解析器

你可以在XWork中使用外部引用解析器,而不是由XWork来解析。一个例子就是XWork和Spring集成中使用外部引用解析器。

你需要编写外部引用解析器,并在package声明中告诉XWork使用它:

<package

name="default"

externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver">

现在可以使用外部引用了:

<external-ref name="foo">Foo</external-ref>

属性名就是setter方法的名字,而Foo就是要查找的引用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有