当我们有的时候觉得在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);
}
}
分享到:
相关推荐
在Java编程中,加载配置文件是一项常见的任务,它允许程序在运行时动态获取或更改设置。这个"Java加载配置文件工具类"很可能是为了解决这个问题而创建的一个实用工具,帮助开发者更方便、高效地处理配置文件。配置...
在Java编程中,读取配置文件是常见的任务,它允许我们分离程序的配置信息,如数据库连接字符串、API密钥等,与实际的代码逻辑。这样可以方便地更新和管理这些参数,而无需重新编译或部署应用程序。下面将详细解释...
在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和可维护的应用程序时。配置文件通常用于存储应用程序的设置、连接信息或其他敏感数据,这样可以将这些信息与核心代码分离,便于管理和更新。本篇文章将...
如果需要读取配置文件中的所有键值对,可以使用`propertyNames`方法获取所有键名,并通过`getProperty`方法逐一读取每个键对应的值。 ```java public static void readProperties(String filePath) { ...
在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和可维护的应用程序时。配置文件通常用于存储应用程序的动态设置,如数据库连接字符串、API密钥、服务器地址等,这些信息需要在运行时根据环境进行调整...
通过以上步骤,你可以使用Java的`Properties`类高效地读取、修改和保存配置文件,为你的应用程序提供灵活的配置管理。在实际项目中,你可能会将其封装到一个单独的类,如示例代码中的`PropertiesReader`,以提供更...
3. **读取配置属性**:加载完成后,我们可以通过键(key)来获取对应的值(value)。例如,如果我们有一个名为`db.url`的属性,我们可以这样读取: ```java String dbUrl = props.getProperty("db.url"); ``` 4. *...
通过以上内容,你应该能够理解并实现Java中读取`properties`配置文件的基本操作。在实际项目中,还可以结合Spring框架或者其他配置管理工具,如Apache Commons Configuration,进一步简化配置文件的管理和使用。
总之,通过Java的静态代码块和类加载器,我们可以有效地管理和加载资源文件,特别是属性配置文件,确保在程序启动时即完成初始化工作,提升应用性能。这种技术在大型复杂系统中尤其常见,因为它能够保证配置的正确性...
本文将详细介绍如何在Java中实现串口通信,并围绕"Java串口通信配置文件(全).rar"这个压缩包展开讨论。 在Java中进行串口通信,我们通常会使用第三方库,比如RXTX库。RXTX是一个开源的Java库,它为Java提供了直接...
本压缩包包含两个工具类,分别用于读取`.yml`和`.properties`格式的配置文件,这两种格式都是Java开发中常见的配置文件类型。 首先,我们来看`.properties`配置文件。这种格式的文件历史较为悠久,它的语法简单,每...
总的来说,Spring Boot通过`@ConfigurationProperties`和`@Component`注解使得从`properties`或`yml`配置文件中获取和使用配置变得非常简单。开发者只需创建一个Java类,声明属性,并让Spring Boot自动绑定配置,...
在这个例子中,我们首先创建一个`Properties`对象,然后通过`FileInputStream`打开配置文件,使用`load()`方法加载属性,最后用`getProperty()`获取指定键的值。 2. 使用`ResourceBundle`类 `ResourceBundle`类...
1.1.4 遍历键值对并打印:通过`keySet()`方法获取所有键,然后使用`getProperty()`方法获取对应的值。 ```java Set<Object> keySet = properties.keySet(); for (Object object : keySet) { System.out.println...
在Java编程中,`properties`文件是一种常用的配置文件格式,用于存储程序的配置信息,如数据库连接字符串、系统参数等。这些数据以键值对的形式存在,键与值之间用等号(=)或冒号(:)分隔。本篇文章将详细探讨如何...
2. **获取属性值**:`getProperty`方法用于根据键获取对应的值。 #### 四、写入与更新`.properties`文件 除了读取之外,还可以使用`Properties`类来修改或添加新的键值对到`.properties`文件中: ```java public ...
在Java编程中,Properties文件是用于存储配置信息的文本文件,通常包含键值对,其中键和值之间用等号(=)或冒号(:)分隔。当我们需要处理包含中文键的Properties文件时,可能会遇到编码问题,因为默认的ISO-8859-1...
2. **获取键值对**:加载文件后,你可以通过键来获取对应的值。`getProperty()`方法用于检索Properties对象中指定键的值。 ```java String dbUrl = prop.getProperty("database.url"); String dbUser = prop....
在Java开发中,配置文件管理是至关重要的,它允许我们分离程序的静态配置信息,使得配置更为灵活且易于维护。Apache Commons Configuration库提供了一个强大的工具集,用于处理各种类型的配置文件,包括properties和...
默认情况下,Spring Boot会根据`spring.profiles.active`属性来选择对应的配置文件。 ### 5. YAML配置 `application.yml`文件使用YAML格式,其语法更直观,层次结构清晰。例如: ```yaml server: port: 8080 ...