#groovy
#groovy
Вопрос:
Я интегрирую Groovy в свой Java-проект, чтобы он мог загружать Groovy-код во время выполнения. Идея состоит в том, чтобы сохранить некоторые бизнес-правила в базе данных или кэше памяти и перезагрузить их во время выполнения.
Однако я не могу найти метод, который считывает из строки или InputStream и поддерживает как скрипты, так и классы.
В документации groovy показаны 3 метода загрузки скриптов и классов во время выполнения, но ни один из них не позволяет загружать как скрипты, так и классы из строкового ввода:
- GroovyShell поддерживает кэширование, но имеет ограничения по безопасности потоков и запускает только скрипты
- GroovyClassLoader загружает строки и запускает классы, но кэширует только входные данные файла
- GroovyScriptEngine запускает классы и скрипты, поддерживает кэширование и перезагрузку, но только считывает файлы
Комментарии:
1. когда вы говорите о
runs classes
— речь идет о классе сstatic void main
методом? не могли бы вы показать примеры кода, который вы хотите запустить?2. Идея состоит в том, чтобы прочитать кучу правил, определенных в другом месте (БД или файл), перенести их в класс или скрипт и запустить их. По сути, это DSL для бедных людей.
3. Используйте groovyshell. Он также может запускать классы. Ограничение потока — только если вы реализуете его с ограничением.