0

我在一个春季项目中使用 eclipselink。我的配置的一个必要部分是配置我的 id-generator 的 SessionCustomizer(Twitter 的 Snowflake)。

是否可以使用 spring 处理此定制器的创建,以便我可以使用依赖注入并使用属性占位符?

我为定制器找到的唯一示例总是在持久性 xml 中配置类。

到目前为止,这是我的配置:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="platform.auth-service" />
    <property name="jpaDialect" ref="jpaDialect" />
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
    <property name="jpaPropertyMap" ref="jPAPropertyProviderMap" />
</bean>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
    <property name="generateDdl" value="${database.generateTables}" />
    <property name="databasePlatform" value="${database.platform}" />
</bean>
<bean id="entityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect" />
4

1 回答 1

0

虽然@Configurable来自 spring-aop(AspectJ 集成)的注释本来是一个解决方案,但我决定用一个静态类来解决我的问题,我用一个beanSequenceHolder存储序列。SequenceInstaller

最后SessionCustomizer将存储的序列安装在持久化上下文工厂中。

我必须配置工厂和安装程序之间的依赖关系,否则 spring 可能在安装程序之前处理了工厂。

于 2013-01-22T15:30:29.053 回答