2013-11-04 42 views
0

我有一个由Hibernate,Spring和Jersey组成的堆栈。Jersey服务使用HIbernate默认数据集进行初始化

虽然事情了很大的平安,在我们的应用并非一切都是(也不可能是,由于种种原因,我知道我打破REST最佳实践的地方。)

我需要做两件事情,并无法弄清楚如何使两者都发生。

在我的应用程序的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> 

这通常加载一些休眠的数据到数据库中的我。 但是,我还需要初始化服务中的一些内存结构。

的那一刻我努力尽管打电话给我的服务扩展ServletContainer和覆盖发起super.initiate() 或实现AbstractResourceModelListener然后提供装载的(AbstractResourceModelContext modelContext) 我得到空指针,因为我提供的初始数据data.sql不在那里。

我该如何正确地做到这一点,所以我都得到我的data.sql加载,并可以执行服务加载时的几个语句?

(如果有人好奇,是服务是@Singleton)

任何帮助表示赞赏。

回答

0

所以,这里的结果是正确的答案是使用@PostConstruct,尽管eclipse可能会提供有关限制和库的警告。我不知道为什么会出现这种警告,或者为什么它会继续工作,但@PostConstruct是在春季不去垃圾的方法。 (也就是说,如果你没有固定,做外部初始化和注入它更加RESTFUL和更好,并且不需要@Singleton,但是我认为在问题和答案中它不是一个选项无论出于何种原因。)

相关问题