Jmin IOCWord文档下载推荐.docx

上传人:b****5 文档编号:16471099 上传时间:2022-11-23 格式:DOCX 页数:25 大小:26.32KB
下载 相关 举报
Jmin IOCWord文档下载推荐.docx_第1页
第1页 / 共25页
Jmin IOCWord文档下载推荐.docx_第2页
第2页 / 共25页
Jmin IOCWord文档下载推荐.docx_第3页
第3页 / 共25页
Jmin IOCWord文档下载推荐.docx_第4页
第4页 / 共25页
Jmin IOCWord文档下载推荐.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

Jmin IOCWord文档下载推荐.docx

《Jmin IOCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Jmin IOCWord文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。

Jmin IOCWord文档下载推荐.docx

*@authorChrisLiao

*@version1.0

publicinterfaceBeanElementextendsSerializable{

}

下面简单介绍一些POJO描述元素 

Singleton:

被描述的POJO实例是否为单实例,可以取值:

true或false 

InitializationMethod:

初始化方法的描述元素,当容器完成构造后,将调用初始化方法 

DestroyMethod:

销毁方法,当应用结束时,容器自动调用POJO的销毁方法 

Construction:

POJO的构造方式描述元素。

目前支持三种构造方式:

1:

普通反射构造,容器将直接在类的构造器上构造实例. 

2:

工厂方法构造,通过类的Static方法构造实例 

3:

工厂Bean构造,容器通过调用另一个POJO的实例的指定方法来构造 

Property:

POJO的属性描述对象,会携带参数。

关联属性注入 

Invocation:

POJO的方法调用描述对象,会携带参数。

关联方法调用注入 

Interception:

POJO方法调用拦截描述对象,属于Around类别 

3:

参数 

容器有一个很好的优点:

依赖注入。

当容器在构造一个POJO实例时,可以对它实施注入:

将一些有用的参数值放进对象内部,以完成对象准备动作,使其一旦被外部获取即可使用。

那么这参数值是从哪里来的呢?

很容易让人想到注册,没错,它们是从外部导入容器内部的。

当使用容器注册POJO描述元素时,并不是简单的动作,某些元素是可以携带一些有用的参数值,从而可以被容器用到。

由于IOC环境因素,导致这些参数值是有别于普通方法参数。

如何表达这些参数值,且能让容器理解呢?

描述在该容器中发挥积极重要的作用,其实对象性语言本身就是利用描述的特性。

在该framework中,定义了一个用来被容器所能理解的参数值对象:

IocValue,它是一个接口,在容器下已经存在一些实现子类,很多情况下它们可以作为参数而存在的,由于值的类别不同,导致参数也是不一样的。

同样为了方便,框架提供一个辅类:

ParameterFactory,被用来创建拥有不同类别值的参数对象。

20

21

22

23

24

25

26

27

*IOCvaluetypeobject.

*

publicinterfaceIocValueextendsSerializable{

/**

*Returndescriptionobjectforiocvalue

publicObjectgetDescription();

*Returnobjectvalueforthisiocvalue.

publicObjecttoObjectValue();

下面简单介绍一些参数值类别。

BooleanValue

ByteValue

CharValue

ShortValue

IntValue

LongValue

FloatValue

DoubleValue

ClassValue

ReferenceValue

InstanceValue

4:

API介绍 

容器方法API 

元素工厂API 

参数工厂API 

拦截器 

5:

元素详解 

在直接使用方式下,开发者需要亲自创建容器和注册元素,如属性,构造等,当然准备好这些基本动作后,并不意味开发的完成.在获取对象的实例前,应该需要将对POJO描述的相关元素注册到容器中,相关的元素已经在前面所讲述,为了更好理解该框架下的描述元素,下面逐一讲述它们. 

5.1对象构造 

在前面已经提到构造描述元素(Construction),它将引导容器如何去创建一个POJO实例。

在该框架中提供了三种方式:

普通构造;

工厂方法构造;

工厂Bean构造,下面分别讲述它们。

A:

普通构造 

容器将直接使用Class来构造一个对象实例,通常在工程应用时候,我们可以使用这样的代码去创建我们期盼的实例:

Objectinstance=Class.newInstance();

当然容器构造一个Class的对象时,不是一个如此简单的动作。

很多时候我们在编写一个新的Class时候,会编写Class的构造方法,它们被用来在构造对象时候携带一些有用的参数信息。

携带参数值的构造方式是比比皆是。

在该Framework中,只要合理描述这些参数既可,容器将在构造的时候,它们被自动注入对象实例。

那么如果注册这种构造方式呢?

框架是允许显式与隐式两种方式去注册构造方式。

通过构造描述对象 

Constructionconstruction=BeanElementFactory.createConstruction(newParameter[]{parameter1,parameter2......});

//再通过如下类似的方式注册

IocContainer.register(ClassbeanClass,Constructionconstructor);

直接调用容器方法注册构造参数 

IocContainer.register(ClassbeanClass,Parameter[]constructParameters);

B:

工厂方法构造 

在该种构造方式下,容器将调用当前POJOClass的自身一个静态方法去完成对象的构造,当然这个方法可以是带有参数的,而这些参数同上被称为构造参数。

在描述方法参数时,请注意参数的类别,构造的参数值应该与之相匹配。

创建该方式的构造元素时,可使用如下类似代码进行该元素对象的创建 

Constructionconstruction=BeanElementFactory.createConstruction(StringfactoryMethodName,Parameter[]parameters);

//注册如普通构造

...........

C:

工厂Bean 

在该构造方式下,容器将调用另一个已经存在的POJO的方法来完成构造动作,这个被容器调用的POJO被称为工厂Bean.既然是方法调用,那么是有可能使用一些参数值。

使用如下代码去构造该方式下的元素。

Constructionconstruction=BeanElementFactory.createConstruction(StringfactoryBeanRefID,StringfactoryMethodName,Parameter[]parameters);

5.2对象单态 

在一些应用的时候,针对某个Class,可能只需要它的一个实例,又某些情况下却只需要多个不同的实例,框架提供了一个是否为单态描述元素:

Singleton 

Singletonsingleton=BeanElementFactory.CreateSingleton(booleansingleton);

5.3初始化方法 

传统的开发时,当完成一个对象的创建后,还有可能在该对象上执行一些初始化动作,同样该容器框架可以帮我们完成对实例的初始化 

InitializationMethodmethod=BeanElementFactory.createInitMethodName(Stringmethodname);

5.4销毁方法 

当我们不在使用某个对象时,希望存在某种自动机制来完成某些结束动作,比如进行资源回收 

DestroyMethodmethod=BeanElementFactory.createDestroyMethodName(Stringmethodname);

5.5对象属性 

从静态角度描述一个对象,我们通常可以会使用类似语句:

它有某某特性等,在对象语言中,我们可以称这些某某特性为对象属性(个人理解:

对象语言本身就是利用抽象原理对对象进行描述,我们框架也是如此哦^-^)。

为了对象描述的完整性,在IOC环境下,属性的描述同样是允许的,只不过该描述方式与直接的对象属性描述是有差异的。

为了容器的理解性,框架中定义了应用于IOC下的属性对象:

Property.在对象世界里,通常会使用属性值来描述属性。

为了描述统一性,在框架中,我们称这个属性值为参数值,事实上参数不只是应用在属性上,后面将会陆续谈到。

如果要构造一个属性元素,那么同时也应该构造一个合理的参数,如例:

//通过调用框架的工厂方法创建一个参数对象

ParameterageParmeter=ParameterFactory.createIntType(28);

//通过调用框架的工厂方法创建一个属性描述对象

PropertyageProperty=BeanElementFactory.createProperty("

age"

ageParmeter);

5.6对象方法 

上面的讲述,我们从静态角度使用了属性描述对象。

既然有静态,那么相对就有动态描述。

我们通常会这样描述我们自己的对象:

这个对象可以做某某事情,这个”做”体现了对象”动”的一面及类的职责。

在对象中,使用了方法来反映动态一面,当调用一个对象方法时,可能使用一些有意义的参数值,这个参数就是上面已经提到的那个参数。

该容器框架中,定义了一个方法调用描述元素.下面例子可参考!

ParameternameParmeter=ParameterFactory.createStringType("

China"

);

//通过调用框架的工厂方法创建一个方法调用描述元素对象

Invocationinvocation=

BeanElementFactory.createInvocation("

sayHello"

newParameter[]{nameParmeter});

5.7方法拦截 

该框架提供了方法调用级拦截,同样它作为一个元素对象被工厂方法所创建 

InterceptionmethodInterception=BeanElementFactory.createInterception(StringmethodName,String[]parameterTypes);

以上代码替我们创建了一个方法拦截元素对象,很明显我们创建拦截元素,自然要提到拦截器,与该描述元素有什么关系呢?

我们可以调用该元素下的一些方法来添加方法拦截器。

//添加一个拦截器实例

publicvoidaddInterceptorByInstance(Interceptorinterceptor);

//添加一个拦截器实现类

publicvoidaddInterceptorByClass(ClassinterceptorClass);

//添加一个拦截器实现类名

publicvoidaddInterceptorByClassName(StringinterceptorClassName);

//添加一个拦截器引用

publicvoidaddInterceptorByReference(Objectreference);

5.8元素注册 

通过前面基本讲述,我们知道元素对象是需要注册到容器中,才能发挥作用IOC容器提供了一些有用的元素注册方法,该容器允许多步添加所需要的元素,因此才容器具有一定的动态性,下面公开该容器的API 

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

*Copyright(c)jminOrganization.Allrightsreserved.

importjava.util.Map;

importorg.jmin.j2ee.ioc.element.Autowire;

importorg.jmin.j2ee.ioc.element.BeanElement;

importorg.jmin.j2ee.ioc.element.Construction;

importorg.jmin.j2ee.ioc.element.DestroyMethod;

importorg.jmin.j2ee.ioc.element.InitializationMethod;

importorg.jmin.j2ee.ioc.element.Interception;

importorg.jmin.j2ee.ioc.element.Invocation;

importorg.jmin.j2ee.ioc.element.PoolSize;

importorg.jmin.j2ee.ioc.element.Property;

importorg.jmin.j2ee.ioc.element.ProxyInterfaces;

importorg.jmin.j2ee.ioc.element.Singleton;

*Amicro-containerregisteresobjectpartdefinition,andwhichiscalledaselements,

*thecontainerwillcontrolobjectinstanceslifecyclebytheirelementsdefinition.

*Afterelementsregisteration,objectinstancescanbegottenwithregisteredkeysfrom

*thecontainer.Someregisterationmethodsaresuppliedtoimportelementstocontainer.

publicinterfaceIocContainer{

*containsbeanID

publicbooleancontainsBeanID(ObjectbeanID);

*FindabeaninstancefromcontainerbyabeanID.

*Ifnotfound,thenreturnnull.

publicObjectgetBean(ObjectbeanID);

*Findabeaninstancewithaclass.Ifnotfound,thenreturnnull.

publicObjectgetBeanByClass(Classcls);

*Findallbeaninstancemap

publicMapgetBeansByClass(Classcls);

*registeraobjectinstanceincontainer

publicvoidregisterInstance(Objectinstance);

*registeraobjectinstancewithabeanID

publicvoidregisterInstance(ObjectbeanID,Objectinstance);

*registeraclasses

publicvoidregisterClass(ClassbeanClass);

publicvoidregisterClass(ClassbeanClass,Property[]properties);

publicvoidregisterClass(ClassbeanClass,Invocation[]invocation);

publicvoidregisterClass(ClassbeanClass,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1