Загружать и кэшировать заводные скрипты и классы из строки

#groovy

#groovy

Вопрос:

Я интегрирую Groovy в свой Java-проект, чтобы он мог загружать Groovy-код во время выполнения. Идея состоит в том, чтобы сохранить некоторые бизнес-правила в базе данных или кэше памяти и перезагрузить их во время выполнения.

Однако я не могу найти метод, который считывает из строки или InputStream и поддерживает как скрипты, так и классы.

В документации groovy показаны 3 метода загрузки скриптов и классов во время выполнения, но ни один из них не позволяет загружать как скрипты, так и классы из строкового ввода:

  • GroovyShell поддерживает кэширование, но имеет ограничения по безопасности потоков и запускает только скрипты
  • GroovyClassLoader загружает строки и запускает классы, но кэширует только входные данные файла
  • GroovyScriptEngine запускает классы и скрипты, поддерживает кэширование и перезагрузку, но только считывает файлы

Комментарии:

1. когда вы говорите о runs classes — речь идет о классе с static void main методом? не могли бы вы показать примеры кода, который вы хотите запустить?

2. Идея состоит в том, чтобы прочитать кучу правил, определенных в другом месте (БД или файл), перенести их в класс или скрипт и запустить их. По сути, это DSL для бедных людей.

3. Используйте groovyshell. Он также может запускать классы. Ограничение потока — только если вы реализуете его с ограничением.