好吧,即使是“旧”1.2.1,您仍然可以使用 Spring-DM,尽管我真的建议切换到 Blueprint,它在 OSGi 上运行顺畅,与 Spring 本身并没有太大区别。特别是因为你想对你的 bean 进行交易。我最喜欢的设置是带有 OpenJPA 的 Blueprint(Aries 或 Gemini),它在 OSGi 环境中效果最好。
这是一个关于如何使用 Aries Blueprint 执行此操作的简单示例
<bean id="myDao" class="my.project.dao.jpa.MyJpaDao">
<jpa:context property="em" unitname="persistenc-unit" />
<tx:transaction method="*" value="Required" />
</bean>
有了它,您就可以在该类上进行任何方法事务。我通常将这些 DAO 对象保存在一个单独的包中,仅包含我的实体类和 DAO。为了在我的应用程序中获取这些 DAO,我注册为服务
<service id="myDAO" ref="myDao" interface="my.project.dao.MyDao" />
现在对你来说,仍然可以用它来“软”转移到蓝图。如果你像我一样将你的实体单独放在一个额外的包中,你只需要从你的 Spring 中引用那些 DAO 服务(与 Spring-DM 一起,在这种情况下,建议坚持使用 spring-dm 1.2.1,你'否则会遇到非常糟糕的问题),然后从那里开始使用你的标准。春季应用。这就是 OSGi 的真正美妙之处,您可以随意混合所有这些服务框架。