Java 6对脚本的支持

来源:互联网 发布:金林钣金展开软件2017 编辑:程序博客网 时间:2024/06/11 14:17

下面的例子将演示通过js给javaBean进行初始化。

Config.java

public class Config {private String version = "" ;private int server = 0 ;private String ip = "" ;public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public int getServer() {return server;}public void setServer(int server) {this.server = server;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}@Overridepublic String toString() {return "version = " + getVersion() + ",server = " + getServer() + ",ip = " + getIp() ;}}
ScriptEngineForJavaScriptTest.java

package test.scriptengine;import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;import java.net.URL;import java.util.HashMap;import java.util.Map;import javax.script.Bindings;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.SimpleBindings;import org.apache.commons.io.IOUtils;public class ScriptEngineForJavaScriptTest {/** * @param args */public static void main(String[] args) {Config config = buildConfig() ;System.out.println(config.toString());}public static Config buildConfig(){ClassLoader _classLoad = Thread.currentThread().getContextClassLoader() ;URL url = _classLoad.getResource("config.js") ;Map<String, Object> _bindings = new HashMap<String, Object>() ;Config config = new Config() ;_bindings.put("config", config) ;String _scriptContext = null ;Reader _reader = null ;try{_reader = new InputStreamReader(url.openStream(), "UTF-8") ;_scriptContext = IOUtils.toString(_reader) ;}catch(IOException e){throw new IllegalStateException("can't load config from url["+url+"]") ;}ScriptEngineManager factory = new ScriptEngineManager() ;ScriptEngine engine = factory.getEngineByName("JavaScript") ;Bindings buindings = new SimpleBindings(_bindings) ;try{engine.eval(_scriptContext, buindings) ;}catch(Exception e){}return config ; }}

config.js初始化

config.version = "1.1.0" ;config.setServer(1010) ;config.setIp("192.168.1.1") ;

打印出来的结果:

version = 1.1.0,server = 1010,ip = 192.168.1.1

PS:比较有意思的是,可以直接对private的属性进行直接赋值