读取 jpa 的配置文件.添加自己的属性.

简介:   package com.freewebsys.sns.common; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import

 

package com.freewebsys.sns.common;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Iterator;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;

public class SysConfUtil {

	/**
	 * @param args
	 * @throws MalformedURLException
	 */
	public static void main(String[] args) throws MalformedURLException {
		// TODO Auto-generated method stub
		System.out.println(getConfigValue("mail.host"));
		// System.out.println(getConfigValue("mail.username"));
	}

	private static Document document = null;

	static {
		Enumeration<URL> xmls;
		SAXReader reader = new SAXReader(DocumentFactory.getInstance());
		try {
			xmls = Thread.currentThread().getContextClassLoader()
					.getResources("META-INF/persistence.xml");
			if (xmls.hasMoreElements()) {
				URL configURL = xmls.nextElement();
				document = reader.read(configURL.openStream());
			}
		} catch (Exception e) {
			System.out.println("加载配置失败:" + e.getMessage());
		}
		// System.out.println(document.selectSingleNode("@name=mail.host"));
	}

	@SuppressWarnings("unchecked")
	public static String getConfigValue(String name) {
		System.out.println(document.getRootElement().getName());
		// /*[name()='persistence']/*[name()='persistence-unit']/*[name()='properties']/*[name()='property']
		// 得到根节点
		Element root = document.getRootElement();
		// 得到persistenceUnit
		Element persistenceUnit = root.element("persistence-unit");
		// 得到下面的属性
		Element properties = persistenceUnit.element("properties");
		// 对属性进行循环,找到自定义的配置
		for (Iterator<Element> i = properties.elementIterator("property"); i
				.hasNext();) {
			Element property = i.next();
			if (property.attributeValue("name") != null
					&& property.attributeValue("name").equals(name)) {
				// 如果有这个属性返回value
				return property.attributeValue("value");
			}
		}
		return "";
	}
}

 经过 测试 可以读取 配置文件.并且 打成 jar 包之后 也可以读取到配置文件.

 

在 properties 下面添加 自己的属性就 property

 

就可以读取了..比如我添加了. 邮件的配置.

目录
相关文章
|
Windows
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
不用 “netsh winsock reset” 命令解决 “在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配”
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
|
8月前
|
前端开发 Java Spring
properties配置文件的读取
properties配置文件的读取
log4j属性配置文件
log4j属性配置文件
直接取配置文件对应数据映射到对象中,可在代码中直接使用
直接取配置文件对应数据映射到对象中,可在代码中直接使用
|
Java 测试技术 Apache
实战小技巧16:Properties配置文件自动装载JavaBean
SpringBoot的配置自动装载,使用起来还是很舒爽的,可以非常简单的将properties配置文件的内容,填充到Java bean对象中,如果我们现在是一个脱离于Springboot框架的项目,想实现上面这个功能,可以怎么来做呢?
382 0
|
XML 数据格式
XML——读取文件夹下所有的Xml文件,并修改属性,保留上次打开文件的位置
XML——读取文件夹下所有的Xml文件,并修改属性,保留上次打开文件的位置
195 0
XML——读取文件夹下所有的Xml文件,并修改属性,保留上次打开文件的位置
Properties 文件的编写与读取
SpringBoot 中的两大配置 properties yaml
2159 0