捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
spring for delphi XE
关键字:dephi spring
来 自:原创
平 台:Win2K/2003/NT/XP 下载所需:0 火柴
深浅度:高级 完成时间:2014/5/8
发布者:henreash (奖励60火柴) 发布时间:2014/5/13
编辑器:Delphi7 语  种:简体中文
分 类:对象 下载浏览:127/8686
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
借助delphixe提供的优秀的语言特性,实现java spring框架中ioc及aop。整个框架的配置和用法在兼顾Delphi语法的前提下,尽量和java spring保持一致。

SpringXE是使用Delphi完全模拟Java的Spring框架的项目,由于预计需要使用Delphi的反射机制实例化对象、拦截虚方法进行AOP,目前项目只支持XE2以上版本,对低版本支持后续实现。

1.配置文件中scope取值prototype(多例)或singleton(单例),

在ApplicationContext?类构造的时候,加载XML后,构造出singleton类型的bean。单例中引用的多例bean也是单例;多例中引用的单例bean还是单例。bean节点增加lifecycle属性,设置为interface表示使用接口引用计数管理生命周期,框架不释放单例的bean对象。
a)scope
b)属性类型支持integer int64 float double boolean
c)单例的lazy-init
d)枚举类型属性赋值
e)集合(set)类型属性赋值
f)基本类型数组 对象数组使用map list注入
2.配置文件bean节点增加init-method属性,并提供代码实现,在创建类实例时调用

<bean id="class1" class="Unit2.TClass1" scope="singleton" lazy-init="false" init-method="Init">
约定:指定的init-method方法名称任意,无参数,无返回值。创建实例进行调用
3.配置文件中bean节点增加contructor节点,设置类构造函数参数

<bean id="class1" class="Unit2.TClass1" scope="singleton" lazy-init="false" init-method="Init">
<contructor-arg index="0" value="a">
</
<contructor>
<contructor-arg index="1" value="b">
</
<contructor>
......
<contructor-arg index="n" ref="bean-name">
</
<contructor>
Unknown end tag for </bean>

4.配置文件的property节点,增加map、list子节点,提供给集合属性赋值功能

<property name="lists">
<list>
<value>
第一个list
</value>
<value>
第二个list
</value>
<value>
第三个list
</value>
</list>
</property>
<property name="maps">
<map>
<entry key="key1" value="value1">
</entry>
<entry key="key2" value="value2">
</entry>
<entry key="key3" value="value3">
</entry>
</map>
</property>
5 aop实现和配置

约定:在代码中定义拦截器,这是一个普通的class,其中定义TVirtualMethodInterceptor成员,并实现拦截逻辑

在配置中,定义拦截器bean,这是一个普通的bean。 在目标bean中加入
<interceptor>
节点,创建实例时,如果有interceptor节点,则执行拦截器逻辑
<bean id="myinterceptor" class="Unit2.TMyInterceptor" scope="singleton" lazy-init="false">
</bean>
<bean id="myclass" class="Unit2.TTestClass" scope="prototype">
<interceptor>
myinterceptor
</interceptor>
</bean>
6 library配置实现 约定:如果需要带包发布产品,则可以在配置文件中设置要加载的bpl包,框架负责运行时加载bpl,这样bpl中的类也可以使用rtti进行加载。

修改配置文件格式:添加
<spring>
根节点,其下有
<beans>

<librarys>
子节点 <?xml version="1.0" encoding="UTF-8"?>
<spring>
<packages>
<package>
xxx.bpl
<package>
Unknown end tag for </packages>

<beans>
<bean id="class1" class="Unit2.TClass1" scope="singleton" lazy-init="false">
<property name="F1" value="hello world">
</property>
</bean>
<bean id="class2" class="Unit2.TClass2" scope="singleton" lazy-init="false">
<property name="FClass1" ref="class1">
</property>
</bean>
<bean id="intf1" class="Plugin.TPluginClass" scope="singleton" lazy-init="false">
<property>
</property>
</bean>
</beans>

svn地址:
https://code.google.com/p/spring-for-delphi-xe/
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论1条 当前显示最后1条评论
jone_h 2014/5/27 17:49:16
历害
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表