JAVA基础——使用配置文件
一. 前言
日常我们做项目中,我们经常会遇到这样的情况:由于开发环境和生产环境的不同,项目部署在生产环境之前,有些参数我们并不知道如何取值。例如:数据库链接设定,我们在部署生产环境之前,无法预知客户的数据库连接地址是什么,也无法预知数据库的用户名和密码。这种情况下,就需要我们将数据库的连接参数保存到某个文件中,项目需要链接数据库的时候,就从该文件中获取相关参数,以保证系统在生产环境中的正常运转。
为了解决这种问题,我们就需要用到JAVA的properties文件。
二. 介绍
JAVA的配置文件是以properties为扩展名的,其内容为键值对形式存储,且键名和键值都是字符串格式。JAVA提供java.util.Properties类,可以非常方便的读取配置文件的信息。
三. 使用
1. 新建JAVA工程。
2. 新建properties文件,名称为application.properties。
SQL.url=jdbc:sqlserver://127.0.0.1; DatabaseName=BaseFrame
SQL.userName=sa
SQL.passWord=-+
其中,SQL.url定义了数据库的链接地址;SQL.userName定义了用户名;SQL.passWord定义了密码。
3. 新建Main.class并为其添加main方法。
package com.luych.stu;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class Main {
public static void main(String[] args) throws Exception {
// 将配置文件加载到流中
InputStream in = Main.class.getClassLoader().getResourceAsStream("application.properties");
// 创建并加载配置文件
Properties pro = new Properties();
pro.load(in);
// 获取配置文件定义的值
String url = pro.getProperty("SQL.url");
System.out.println("配置文件中SQL.url的值为:"+url);
String userName = pro.getProperty("SQL.userName");
System.out.println("配置文件中SQL.userName的值为:"+userName);
String passWord = pro.getProperty("SQL.passWord");
System.out.println("配置文件中SQL.passWord的值为:"+passWord);
// 使用
Connection con = DriverManager.getConnection(url, userName, passWord);
String sql = "select * from tbUser";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet result = pstmt.executeQuery();
int col = result.getMetaData().getColumnCount();
System.out.println("============================");
while (result.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(result.getString(i) + "\t");
if ((i == 2) && (result.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
}
}
package com.luych.stu; import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties; public class Main {
public static void main(String[] args) throws Exception {
// 将配置文件加载到流中
InputStream in = Main.class.getClassLoader().getResourceAsStream("application.properties");
// 创建并加载配置文件
Properties pro = new Properties();
pro.load(in);
// 获取配置文件定义的值
String url = pro.getProperty("SQL.url");
System.out.println("配置文件中SQL.url的值为:"+url);
String userName = pro.getProperty("SQL.userName");
System.out.println("配置文件中SQL.userName的值为:"+userName);
String passWord = pro.getProperty("SQL.passWord");
System.out.println("配置文件中SQL.passWord的值为:"+passWord);
// 使用
Connection con = DriverManager.getConnection(url, userName, passWord);
String sql = "select * from tbUser";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet result = pstmt.executeQuery();
int col = result.getMetaData().getColumnCount();
System.out.println("============================");
while (result.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(result.getString(i) + "\t");
if ((i == 2) && (result.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
}
}
打印结果为:
配置文件中SQL.url的值为:jdbc:sqlserver://127.0.0.1; DatabaseName=BaseFrame
配置文件中SQL.userName的值为:sa
配置文件中SQL.passWord的值为:-+
============================
705244A7-B642-4161-9EC8-966044F15F16 admin 系统管理员 123 15295699492 123@abc.com
4FE0FF3F-B015-482D-AB71-3321D57A7EF4 test1 Test1 123 15295699492 123@abc.com
============================
如此,我们就可以将配置文件中的值读取并使用了。
四. 目录结构
五. 总结
其实大家可能会想到:我直接将url、userName、passWord定义final变量中不就可以了嘛?这样的缺点是我们在将项目部署到生产环境之前,还需要重新调整我们的JAVA代码,并编译生成war包或jar包。而定义到环境变量中则不需要重新编译即可正常运行。
JAVA基础——使用配置文件的更多相关文章
- java基础50 配置文件类(Properties)
1. 配置文件类Properties的概念 主要生产配置文件与读取配置文件的信息 2.Properties要注意的细节 1.如果配置文件一旦使用了中文,那么在使用store方法生产的配置文件额时候字符 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- 黑马程序员:Java基础总结----反射
黑马程序员:Java基础总结 反射 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...
- 学习Spring必学的Java基础知识(1)----反射(转)
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
- 学习Spring必学的Java基础知识(1)----反射
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...
- java基础-学java util类库总结
JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
随机推荐
- PAT (Advanced Level) 1136~1139:1136模拟 1137模拟 1138 前序中序求后序 1139模拟
1136 A Delayed Palindrome(20 分) 题意:给定字符串A,判断A是否是回文串.若不是,则将A反转得到B,A和B相加得C,若C是回文串,则A被称为a delayed palin ...
- 5G/NR OTA (Over The Air) 测试详解
原文链接:http://www.sharetechnote.com/html/5G/5G_OTA.html 1 什么是OTA (Over The Air) OTA代表Over The Air.为了使用 ...
- Python测试进阶——(2)配置PyCharm远程调试环境
新建一个Python项目 配置Deployment,用于本地文件和远程文件的同步,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration 点 ...
- python 字符串实例:检查并判断密码字符串的安全强度
检查并判断密码字符串的安全强度 import string def check(pwd): #密码必须至少包含六个字符 if not isinstance(pwd,str) or len(pwd)&l ...
- 单选与多选与label
单选radio和多选checkbox是用name属性关联的 相同的name就相当于同一道题 <input type="radio" name="radio" ...
- JS浮点数的研究
为什么0.1 + 0.2 得到的是 0.30000000000000004 console.log( 0.1 + 0.2 == 0.3);//false 在js中所有的整数和小数都是以Number形式 ...
- 人脸识别 API Key和Secret Key作用
App key简称API接口验证序号,是用于验证API接入合法性的.接入哪个网站的API接口,就需要这个网站允许才能够接入,如果简单比喻的话:可以理解成是登陆网站的用户名 App Secret简称AP ...
- [题解] LuoguP2764 最小路径覆盖问题
传送门 好久没做网络流方面的题发现自己啥都不会了qwq 题意:给一张有向图,让你用最少的简单路径覆盖所有的点. 考虑这样一个东西,刚开始,我们有\(n\)条路径,每条路径就是单一的一个点,那么我们的目 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:Set接口
import java.util.HashSet ; import java.util.Set ; public class HashSetDemo01{ public static void mai ...
- CAN通讯基本设置
A节点pelican协议下,扩展帧 单滤波方式 A节点的接收滤波器 ID号 设置为 0x19881205 设置过程 (1) pelican模式设置 设置时钟分频寄存器CDR.7 =1 使SJA1000 ...