我有一个由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>
这通常会将一些hibernate数据加载到数据库中。 但是,我还需要初始化服务中的一些内存结构。
尽管调用了super.initiate(),我尝试让我的服务扩展ServletContainer并覆盖启动的那一刻 或者实现AbstractResourceModelListener然后提供onLoaded(AbstractResourceModelContext modelContext) 我得到空指针,因为data.sql提供的初始数据不存在。
我怎样才能正确执行此操作,以便我加载data.sql并在加载服务时执行一些语句?
(如果有人好奇,是的,服务是@Singleton)
任何帮助表示感谢。
答案 0 :(得分:0)
所以,事实证明这里的正确答案是使用@PostConstruct尽管eclipse可能会给你关于限制和库的警告。我不确定为什么会出现这个警告,或者为什么它会继续工作,但是@PostConstruct是在春天不去除其他装载的方法。
(也就是说,如果你没有固定,在外面进行初始化并注入它更加RESTFUL且更好而且不需要@Singleton,但我在问题和答案中都假设它不是一个选项你出于什么原因。)