我有一个由 Hibernate、Spring 和 Jersey 组成的堆栈。
虽然很多东西都是 RESTFUL 的,但并不是我们应用程序中的所有东西都是(而且不可能,由于各种原因。我意识到我在某些地方破坏了 REST 最佳实践。)
我需要做两件事,但无法弄清楚如何让这两件事都发生。
在我的 application-context.xml 我有以下
<!-- Configure the entity manager factory bean -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
<property name="packagesToScan" value="com.mystuff.model"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.import_files">data.sql</prop>
</props>
</property>
这通常会为我将一些休眠数据加载到数据库中。但是,我还需要在服务中初始化一些内存结构。
尽管调用了 super.initiate() 或实现 AbstractResourceModelListener 然后提供 onLoaded(AbstractResourceModelContext modelContext) 我尝试让我的服务扩展 ServletContainer 并覆盖启动的那一刻,我得到空指针,因为我的初始数据由 data.sql 提供不存在.
我怎样才能正确地做到这一点,这样我既可以加载我的 data.sql,又可以在加载服务时执行一些语句?
(如果有人好奇,是的,该服务是@Singleton)
任何帮助表示赞赏。