playframework 1.2.x 如何在开发模式下每次播放重新加载时调用我的方法?
Posted
技术标签:
【中文标题】playframework 1.2.x 如何在开发模式下每次播放重新加载时调用我的方法?【英文标题】:playframework 1.2.x How to have my method call every time play reloads in dev mode? 【发布时间】:2012-08-08 18:03:25 【问题描述】:我需要在每次播放重新加载时调用一个方法,以便我可以使用新类重新扫描一些东西。如果不开发一个完整的插件,我怎么能得到它? (我真的只是想在我的应用程序中快速添加一些东西并继续前进)。
顺便说一句,有没有关于制作播放插件的好教程?
谢谢, 院长
【问题讨论】:
【参考方案1】:每次您的应用程序重新加载(可能经常处于开发模式)时,都会调用 @onApplicationStart 方法。
因此,只需创建一个引导作业,使用 @onApplicationStart 即可实现所需。
您可以通过查看引导作业的 Play 文档来了解更多信息 - http://www.playframework.org/documentation/1.2.5/jobs#concepts
【讨论】:
不,不是真的。然而我们发现我们可以调用 Play.classloader.getAnnotatedClasses(OurAnnotation.class);它总是按顺序返回类,我们可以将 classes[0] 与之前加载的类进行比较。我们知道当类不等于原始类时会重新加载游戏。 ps。 @ONApplicationStart 被称为“大多数”重新加载,但根据我们的测试,绝对不是所有重新加载......我们终于让它工作了。【参考方案2】:好吧,如果你有任何像 NoSql.em() 这样经常运行的方法,而 NoSql 在另一个 jar 文件中,它不会在 Play.classloader 中,在那个方法中,我终于做了一个 Play.classloader .getAnnotatedResources() 它给了我一个列表,我不断比较第一个,当它改变时,我知道重新加载了游戏。目前,这种 hack 对我有用,nosql 层现在与内存中的 nosql 数据库保持一致。
虽然@OnApplicationStart 不被称为“每次”播放重新加载,但您可以使用上述方法知道它何时重新加载 100% 的时间,而不是 75% 的时间,这与使用 @OnApplicationStart 的情况有关.
【讨论】:
以上是关于playframework 1.2.x 如何在开发模式下每次播放重新加载时调用我的方法?的主要内容,如果未能解决你的问题,请参考以下文章
playframework 1.2.x:等待/异步和 JPA 事务
如何让 Playframework 在不发出请求的情况下开始在开发模式下运行应用程序?
在play framework 1.2.x, class JPABase分析中,为啥要调用saveAndCascade()?