【问题标题】:Can I open a REPL in the context of a Spring Web Application?我可以在 Spring Web 应用程序的上下文中打开 REPL 吗?
【发布时间】:2015-11-07 17:12:57
【问题描述】:

我正在开发基于 Spring MVC 和 Tomcat 8 上的 Hibernate 的 Web 应用程序(用于部署和本地开发)。 IDE 是 Spring Tool Suite(基于 Eclipse)。

我想在我的应用程序的上下文中(当它在本地 Tomcat 上运行时)打开一个 REPL(read-eval-print-loop,如 Groovy's、Python's、Ruby's 等),通过缩短代码来加速开发-> 测试反馈循环。

也就是说,我希望能够在命令行(或在 Eclipse 中)打开一个 shell 并执行以下操作:

ClientDAO clientDAO = getAutowiredDAOFromSpringSomehow();
Client client = clientDAO.findByID(100);
client.setName("Another name");
clientDAO.save(client);

我可以通过在控制器的某处设置断点并使用 Eclipse 的调试器显示选项卡来执行任意代码来解决这个问题,但这有点不切实际和不舒服。

如果更方便的话,我愿意使用 Groovy 或 Scala 的 shell(不过我显然仍然需要访问我的对象)。

我有什么选择?

【问题讨论】:

  • 我知道您排除了“显示”选项卡,但对于那些寻找它的人,Spring Tool Suite 将其称为“调试外壳”。

标签: java eclipse spring tomcat read-eval-print-loop


【解决方案1】:

您可以使用Spring ShellJShellBeanShell 来完成此操作

Here's a project 使用 BeanShell 在 android 应用中嵌入 repl

【讨论】:

    【解决方案2】:

    我不知道它是否对您的用例有用,但理论上应该可以使用CRaSH 来做到这一点。它是一个类似于 Linux 上的 Bash 的 Shell,但适用于您的 Java 应用程序,并且可以创建您自己的命令。

    【讨论】:

    • 我尝试在我的应用程序中设置 CRaSH 以尝试查看它是否提供某种 REPL 循环,但仍然无法使其运行。有什么文件可以做到这一点?
    • This link 应该会指导您以正确的方式配置它:) 然后您可以使用groovy plugin 执行您想要的任何代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多