【问题标题】:How do I make Grails execute a controller method on startup?如何让 Grails 在启动时执行控制器方法?
【发布时间】:2013-02-19 08:16:36
【问题描述】:

我是一名 Java 开发人员,并且开始使用旧版 Grails 应用程序。我有一个控制器类和一些 java 类。控制器具有在 java 类中描述的启动/停止任务的方法。我为此使用了ScheduledExecutorService

问题是每次重新部署应用程序时,我都必须调用http://application/controller/start 以使其初始化调度程序。我希望在启动应用程序时调用一次此 controller.start() 方法。我怎样才能做到这一点,或者有更好的方法来做到这一点?

【问题讨论】:

    标签: grails controller


    【解决方案1】:

    我建议将此方法放在服务中。您可以在应用程序启动后从控制器和 Bootstrap.groovy 调用该服务。您还可以在服务上使用标准的@PostConstruct 来启动进程。

    您的业务方法应该位于服务中而不是控制器中。

    如果你真的需要使用控制器,从 Bootstrap.groovy 试试这个:

    new Controller().start()
    

    我没有 env 来测试它,但它应该没有问题。

    【讨论】:

    • 是的,像在 BootStrap.groovy 中那样调用 Controller 方法就可以了。
    • 其实业务逻辑在java类中,controller只是为了控制它们。问题是,当我将逻辑放入服务中时,我得到一个奇怪的 grails-melody 异常,当相同的逻辑位于 java 类中时不会发生这种异常。我找不到发生这种情况的原因,并决定坚持使用 Java,因为我对 Grails 或 Groovy 几乎一无所知
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多