浏览 3183 次
锁定老帖子 主题:OSGi与Spring的整合 - 拨云现日
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-03
Hibernate整合本身比较简单,但如果想把框架设计得更加灵活、耦合性更低,支持以插件方式添加新的数据库表映射以及数据库操作将会比较麻烦,会涉 及到SessionFactory的生成,这些问题后续文章会陆续谈到。我们这里采用的例子是一个典型的基于角色的权限校验系统,简化后我们不再关心持久 层,只来讨论与Spring结合是如何配置的问题。 首先建一个用来注册实体类的接口,可以动态监控数据库实体类的注册与销毁。接口相当简单,代码如下: java 代码
现在需要实现接口了,这个接口会被用来声明一类服务,这样就可以利用OSGi的服务来达到动态添加数据库表映射的目的。 建一个包含实体类的Bundle(命名为wanged_security_entity),其实就是一个插件工程,为简单起见就叫Bundle,下同。新建一个类实现EntityRegister接口,代码如下: java 代码
MANIFEST.MF 中需要引入EntityRegister接口所在的包,否则会找不到该接口。另外还需要导出Role和User所在的包,以便其他Bundle调用。现在 类建好了,需要声明我们的服务了。Spring和OSGi结合可以省去DS的配置文件,这也是上一篇文章在导入所需Bundle时没有引入DS相关的 Bundle的原因。Spring可以在META-INF/spring目录下查找所有的xml文件,并自动解析生成其中定义的Bean。下面我们建一个 bean.xml的文件来声明服务,内容如下: xml 代码
在这个xml文件中,我们声明了一个服务,用来注册权限管理中使用的实体类User和Role。 现在是万事俱备只欠东风,服务已经声明,唯独缺少使用该服务的Bundle。建一个Bundle(命名为wanged_core_persistent),新建一个测试类TestEntityRegister,代码如下: java 代码
在MANIFEST.MF中引入包wanged.core.persistent.entity。在META-INF中添加spring/bean.xml,并定义该测试类: xml 代码
注意上面的cardinality设置正是和setEntityRegister()方法的数组参数对应。现在已经全部搞定,所需要的就是运行一下,看是否如期输出类的信息。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |