私たちのアプリケーションでは、多数の電子メールがシステムから送信されています。これらの電子メールは、動的データを入力するさまざまなコンテキスト変数を使用して、すべてのユーザーに対して同じ形式でした。
現在、管理者がこれらのテンプレートを編集およびカスタマイズできるようにする機能を計画しています。そのため、Groovy シェルを使用して実行時にテンプレートを評価する計画があります。
Binding binding = new Binding();
binding.setVariable("model", [var1: "First Name", var2: "Last Name"])
GroovyShell shell = new GroovyShell(binding);
Object email = shell.evaluate('return "<html><title>Test Shell</title><body>${model.var1} ${model.var2}</body></html>";');
これは私たちにとって十分に機能しているようです。私が持っている質問は次のとおりです。
- GroovyShell は使用するのに適したエンジンですか、それとも Rhino または他のエンジンの方が優れていますか?
- 注意すべきパフォーマンス上の問題やメモリの問題はありますか? 最適化できる簡単な方法、つまりシェルやバインディングを再利用できるもの
- 上記のコードの最大のボトルネックは何ですか? 建設?評価は?
ありがとう