携手创作,共同成长!这是我参加「日新计划 8 月更文应战」的第29`天
还不了解Arthas怎么装置发动的能够翻阅 【Arthas】初始Arthas,装置运用 本文一切的履行命令,能够把项目 Althas(阿尔萨斯)学习 拉到本地发动之后,都能够直接履行
Althas中的OGNL运用姿态
从3.0.5版本增加 Althas支持ognl的格局
参数阐明
参数名称 | 参数阐明 |
---|---|
express | 履行的表达式 |
[c:] | 履行表达式的 ClassLoader 的 hashcode,默认值是SystemClassLoader |
[x] | 成果目标的打开层次,默认值1 (如果目标里边包好目标,这个值大一点能够一起输出) |
运用示例
1.调用静态特点
ognl '@全途径类目@静态特点名'
示例:
ognl '@com.shirc.arthasexample.ognl.OgnlTest@static_str'
2.调用静态办法
ognl '@全途径类目@静态办法名("参数")'
示例一: 简略入参 回来一般目标
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18)' -X 1
示例二:简略入参 回来目标中包括目标和List
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18,2)' -x 1
-x 1 中的x是小写; 上面能够看到 child目标和childs列表都没有打印出来
试试 -x 2
和 -x 3
-x 2 的时分目标特点有打开,可是列表没有, -x 3 才把列表打开了
示例三: 办法A的回来值作为办法B的入参
ognl '#value1=@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18), #value2=@com.shirc.arthasexample.ognl.OgnlTest@setPerson(#value1) ,{#value1,#value2}' -x 2
示例四:履行多行表达式,赋值给暂时变量,回来一个List:
$ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
@ArrayList[
@String[/opt/java/8.0.181-zulu/jre],
@String[OpenJDK Runtime Environment],
]
示例五: 办法入参是简略类型列表
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getChilds({"jinjidelaomanong","jjdlmn"})' -x 2
示例六: 办法入参是一个杂乱目标
先用构造函数构造一个目标
ognl 'new com.shirc.arthasexample.ognl.Shirc("jjdlmn",true)'
然后把这个目标作为入参传入;所以终究能够这么写
ognl '#obj=new com.shirc.arthasexample.ognl.Shirc("jjdlmn",true),@com.shirc.arthasexample.ognl.OgnlTest@inputObj(#obj)' -x 2
示例七: 办法入参是一个Map目标
先构造一个Map目标能够这样
ognl '#{ "foo" : "foo value", "bar" : "bar value" }'
然后把这个目标赋值给一个变量; 终究把这个变量作为入参传入;
然后把这个目标作为入参传入;所以终究能够这么写
ognl '#inputmap=#{ "foo" : "foo value", "bar" : "bar value" }, @com.shirc.arthasexample.ognl.OgnlTest@getMap(#inputmap)' -x 2
3.读取不同类型的值
读取 杂乱目标、List、Map等等值的办法
示例一:拜访杂乱目标特点
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18).name' -x 4
示例二、拜访List或许数组类型
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getChilds({"jinjidelaomanong","jjdlmn"})[0]' -x 2
示例三: 拜访Map目标
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getMap()["shirc"]' -x 2
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getMap()["shirc"].sex' -x 2
shirc: 是map的key; 记住要用双引号”” 引起来
Ognl 常用用法阐明
#
变量引证 #this
当时目标
OGNL的变量计划很简略, 你能够用变量来保存中间成果, 并在后边的代码中再次拜访它, 也能够用变量来使整个表达式愈加简略易懂. OGNL中的一切变量, 对整个表达式都是全局可见的. 引证变量的办法是在变量名之前加上
# 号
OGNL在核算表达式的过程中, 随时会将当时目标保存在"this"
变量中, 这个变量也能够象其他任何变量相同引证,用#this
表明当时目标
例如:
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getMap()["shirc"].(#this.sex=="boy"?"BoyNB":"GirlNB")' -x 2
调用构造办法
new 全途径类名()
ognl 'new com.shirc.arthasexample.ognl.Shirc("shirc",true)'
搜集特殊运用姿态
如果有想要实现的姿态,欢迎留言,博主会把表达式更新到文章中;
参考资料
- ognl运用手册