我有一个问题。
我正在使用Play框架和Ebean。我试图将我的应用程序移植到Play 2.4,我正在尝试使用Play中引入的依赖注入技术。
在以前的版本中,我使用GlobalSettings.onStart()在应用程序启动后初始化一些东西(类似cron的服务)。在2.4我试图使用依赖注入框架实现“onStart”进程作为急切加载的单例。
一般来说,它正在发挥作用。但是,有时候,我在启动应用程序时会收到NullPointerException。从堆栈跟踪,我可以假设,访问数据库时发生异常(EbeanServer在那段时间内为null)。所以我假设,Ebean没有正确启动,因为在申请开始之前,热切的单身人士已经开始了。好的,我将Play的应用程序和数据库对象注入到热切的单例构造函数中,以便及时启动所有内容。
结果......不稳定。有时应用程序启动正常,有时它落在相同的NullPointerException。
看起来数据库有时不能及时启动或者是什么?或者我可能需要注入一些其他Ebean对象才能启动数据库?
答案 0 :(得分:3)
好的,我明白了。
我不得不注入play.db.ebean.EbeanConfig
和play.api.db.evolutions.DynamicEvolutions
,现在Ebean作为我渴望的单身人士的依赖开始了。
正如您在此处所看到的那样,这些是在加载play-ebean插件时注入的两个类https://github.com/playframework/play-ebean/blob/master/play-ebean/src/main/java/play/db/ebean/EbeanModule.java