下面的例子将演示通过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;
}
@Override
public 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的属性进行直接赋值