Конфигурация обычно хранится в файле свойств или XML, который помещается в путь к классу среды выполнения приложения или в фиксированном месте, которое указывается в качестве аргумента виртуальной машины.Доступ к файлу свойств можно получить с помощью java.util.Properties
API.XML-файл может быть проанализирован с использованием JAXP или JAXB.
Вот пример такого файла свойств:
jdbc.url = jdbc:mysql://localhost:3306/javabase
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username = java
jdbc.password = d$7hF_r!9Y
Предполагается, что он называется config.properties
и находится в корнеclasspath (или его корневой путь добавлен в classpath), вот как вы можете загрузить его из classpath:
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
String url = properties.getProperty("jdbc.url");
String driver = properties.getProperty("jdbc.driver");
String username = properties.getProperty("jdbc.username");
String password = properties.getProperty("jdbc.password");
// ...
Вот пример XML-файла:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<jdbc>
<url>jdbc:mysql://localhost:3306/javabase</url>
<driver>com.mysql.jdbc.Driver</driver>
<username>java</username>
<password>d$7hF_r!9Y</password>
</jdbc>
</config>
Предполагая, что он называется config.xml
и помещен в корень пути к классам, вот пример того, как вы можете загрузить его с помощью JAXP:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(input));
XPath xpath = XPathFactory.newInstance().newXPath();
String url = (String) xpath.compile("//config//jdbc//url").evaluate(document, XPathConstants.STRING);
String driver = (String) xpath.compile("//config//jdbc//driver").evaluate(document, XPathConstants.STRING);
String username = (String) xpath.compile("//config//jdbc//username").evaluate(document, XPathConstants.STRING);
String password = (String) xpath.compile("//config//jdbc//password").evaluate(document, XPathConstants.STRING);
// ...
Это всего лишь более многословно, хотя JAXB может сделать жизнь проще, если это довольно сложный файл.
Защита доступа к свойствам или файлам XML, в свою очередь, должна контролироваться на более высоком уровне (ОС / платформа).
См. Также: