java 通过配置文件获取对应的值

当我们有的时候觉得在java程序中添加参数值的时候觉得需要改变代码麻烦,如果你像尝试通过配置文件添加对应的值,而不用去改变*.java文件时,一个小程序。


直接看代码
<?xml version="1.0" encoding = "UTF-8" ?>
<listeners>
<listener class="com.test.TestElement"></listener>

</listeners>



import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Utils {
private static List<Object> listeners = new ArrayList<Object>();

static {
SAXReader sax = new SAXReader();
Document doc = null;
try {
doc = sax.read(Utils.class.getClassLoader()
.getResourceAsStream("listeners.xml"));
Element root = doc.getRootElement();
List list = root.elements("listener");
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
String clazz = element.attributeValue("class");
Object o = Class.forName(clazz).newInstance();
listeners.add(o);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public static List<Object> getListeners() {
return listeners;
}
}


如果对应配置文件中还有别的属性的时候,可以参看下面的代码:


<beans>
<bean id="a" class="com.A" />
<bean id="b" class="com.B" >
<property name="b_a" bean="a"/>
</bean>

</beans>



import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class READ{

private Map<String , Object> beans = new HashMap<String, Object>();


public ClassPathXmlApplicationContext() throws Exception {
SAXBuilder sb=new SAXBuilder();

Document doc=sb.build(this.getClass().getClassLoader().getResourceAsStream("beans.xml"));
Element root=doc.getRootElement();
List list=root.getChildren("bean");
for(int i=0;i<list.size();i++){
Element element=(Element)list.get(i);
String id=element.getAttributeValue("id");
String clazz=element.getAttributeValue("class");
Object o = Class.forName(clazz).newInstance();
beans.put(id, o);

for(Element propertyElement : (List<Element>)element.getChildren("property")) {
String name = propertyElement.getAttributeValue("name");
String bean = propertyElement.getAttributeValue("bean");
Object beanObject = beans.get(bean);

String methodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);

Method m = o.getClass().getMethod(methodName, beanObject.getClass().getInterfaces());
m.invoke(o, beanObject);
}
}

}


public Object getBean(String id) {
return beans.get(id);
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值