Java實(shí)現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法
使用commons的jexl可實(shí)現(xiàn)將字符串變成可執(zhí)行代碼的功能,我寫了一個類來封裝這個功能:
import java.util.Map;
import org.apache.commons.jexl2.Expression;
import org.apache.commons.jexl2.JexlContext;
import org.apache.commons.jexl2.JexlEngine;
import org.apache.commons.jexl2.MapContext;
/**
* 動態(tài)加載方法
*
*/
public class DyMethodUtil {
public static Object invokeMethod(String jexlExp,Map<String,Object> map){
JexlEngine jexl=new JexlEngine();
Expression e = jexl.createExpression(jexlExp);
JexlContext jc = new MapContext();
for(String key:map.keySet()){
jc.set(key, map.get(key));
}
if(null==e.evaluate(jc)){
return "";
}
return e.evaluate(jc);
}
}
調(diào)用
Map<String,Object> map=new HashMap<String,Object>();
map.put("testService",testService);
map.put("person",person);
String expression="testService.save(person)";
DyMethodUtil.invokeMethod(expression,map);
以上這篇Java實(shí)現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字
這篇文章主要介紹了java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字的相關(guān)資料,需要的朋友可以參考下2016-06-06
Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服的詳細(xì)代碼
這篇文章主要介紹了Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
Java中notify()和notifyAll()的使用區(qū)別
本文主要介紹了Java中notify()和notifyAll()的使用區(qū)別,文中通過示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下2021-06-06
Nacos配合SpringBoot實(shí)現(xiàn)動態(tài)線程池的基本步驟
使用Nacos配合Spring Boot實(shí)現(xiàn)動態(tài)線程池,可以讓你的應(yīng)用動態(tài)地調(diào)整線程池參數(shù)而無需重啟,這對于需要高度可配置且需要適應(yīng)不同負(fù)載情況的應(yīng)用來說非常有用,本文給大家介紹實(shí)現(xiàn)動態(tài)線程池的基本步驟,需要的朋友可以參考下2024-02-02
SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)
Eureka是一種基于REST(具像狀態(tài)傳輸)的服務(wù),主要用于AWS云中定位服務(wù),以實(shí)現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移。本文記錄一個簡單的服務(wù)注冊與發(fā)現(xiàn)實(shí)例。感興趣的小伙伴們可以參考一下2019-01-01
springboot集成flyway自動創(chuàng)表的詳細(xì)配置
Flayway是一款數(shù)據(jù)庫版本控制管理工具,支持?jǐn)?shù)據(jù)庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里;本文通過實(shí)例代碼給大家介紹springboot集成flyway自動創(chuàng)表的詳細(xì)過程,感興趣的朋友一起看看吧2021-06-06

