最近在項目中需要根據不同的條件來做走不同分支的邏輯,那麼就需要動態判斷條件表達式結果(不想寫一堆if else),研究了一番,發現了一個輕量級的Java表達式執行引擎:aviator,整個使用下來挺簡單高效的,今天推薦給大家,下面介紹啊一下這款框架!
二.aviator簡介
Aviator是一個輕量級、高性能的Java表達式執行引擎, 它動態地將表達式編譯成字節碼並運行,主要用於各種表達式的動態求值!相比Groovy這樣的重量級腳本語言,aviator是非常輕量級的表達式執行引擎。
二.aviator特性
- 支持絕大多數運算操作符,包括算術操作符、關係運算符、邏輯操作符、位運算符、正則匹配操作符(=~)、三元表達式
- 支持傳入變量
我在開發裏用到的就是關係運算符,動態判斷執行結果(true/false),以兩個變量a、b爲例看下aviator的執行方式:
aviator提供了AviatorEvaluator#execute(java.lang.String)方法來執行操作運算符
- 內置一套強大的常用函數庫
- 支持自定義函數
如果自帶函數不能滿足開發需要, aviator還支持自定義函數,只要實現com.googlecode.aviator.runtime.type.AviatorFunction接口, 並註冊到AviatorEvaluator即可使用!
註冊函數通過AviatorEvaluator.addFunction方法, 移除可以通過removeFunction方法
- 支持賦值
aviator提供的特性還有很多,不再一一舉例,github地址如下,有興趣的可以進一步學習應用
https://github.com/killme2008/aviator
更多內容歡迎關注個人微信公衆號,一起成長!