Java单例模式实例---读取配置文件

java单例读取配置文件 源代码取自:云之讯短信接口类的api demo import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Iterator; import java.util.Properties; import org.apache.commons. 阅读详情
 

         因为配置文件里的信息都是一样的,不论哪个用户要登录系统访问连接数据库,都是要读取配置文件的,这样每次如果都要实例化读取配置文件的类,这样就会非常浪费系统资源。因此使用单例模式:只要实例化一次之后,有了一个对象,之后就不再需要实例化了。

        为了配置文件修改的方便将配置文件的信息单独放到一个xml文件中。       

<?xml version="1.0" encoding="UTF-8"?>
<config><!-- 根元素配置文件 -->
  <db-info><!--配置文件的子元素(数据库信息)  -->
     <!-- 数据库信息子元素(连接数据库类型,名字,用户名,密码) -->
 	 <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
	 <url>jdbc:oracle:thin:@localhost:1521:ANDY</url> 
	 <user-name>drp</user-name>
	 <password>drp</password>
  </db-info>
</config>


 

        使用DOM4j的方式访问读取配置文件,并且保存到实体类JdbcConfig中

package com.andy.drp.util;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 解析xml文件
 */
public class XmlConfigReader {
	
	//懒汉式(用的时候再创建),延迟加载
	private static XmlConfigReader instance = null;
	
	//保存jdbc相关配置信息
	private JdbcConfig jdbcConfig = new JdbcConfig();
	
	//构造方法让其private,这就不让外界利用new创建此类实例
	private XmlConfigReader(){
		
		SAXReader reader = new SAXReader();
		//从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源。此方法通过系统类加载器
		InputStream in =Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-conf.xml");
		try{
			
			Document doc = reader.read(in);
			
			//取得jdbc相关配置信息
			Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
			Element urlElt = (Element)doc.selectObject("/config/db-info/url");
			Element userNameElt  = (Element)doc.selectObject("/config/db-info/user-name");
			Element passwordElt = (Element)doc.selectObject("/config/db-info/password");
			
			//jdbc取得相关的配置
			jdbcConfig.setDriverName(driverNameElt.getStringValue());
			jdbcConfig.setUserName(userNameElt.getStringValue());
			jdbcConfig.setPassword(passwordElt.getStringValue());
			jdbcConfig.setUrl(urlElt.getStringValue());	
		}catch(DocumentException e){
			e.printStackTrace();
		}
	}
	
	//静态方法访问时,直接访问不需要实例化
	public static synchronized XmlConfigReader getInstance(){//synchronized表示同时只能一个线程进行实例化
		if(instance == null){//如果两个进程同时进入时,同时创建很多实例,不符合单例
			instance = new XmlConfigReader();
		}
		return instance;
	}
	
	/*
	 *返回jdbc相关配置
	 *@return 
	 */
	public JdbcConfig getJdbcConfig(){
		return jdbcConfig;
	}
	
	public static void main(String[] args) {
	   //getInstance()是一个静态方法,不需要实例化
		JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
	}

}

        使用DbUtill与oracle数据库连接

/*
 * 封装数据常用操作
 * author:andy
 */
public class DbUtil {
	/*
	 * 取得Connection
	 * DbUtill是工具类,一般工具类都要使用静态方法,直接访问,如果是成员方法就比较麻烦了,每次调用都要实例化
	 * @return--throws ClassNotFoundException
	 */
	public static Connection getConnection() {
		Connection conn =null;
		try{
			//实例化一个存取配置信息的实例
			JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
			//连接数据库的名字(oracle.jdbc.driver.OracleDriver)
			Class.forName(jdbcConfig.getDriverName());
			//获得连接url、username、password的connection
			conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword());
		}catch(ClassNotFoundException e){
			e.printStackTrace();
			
		}catch(SQLException e){
			e.printStackTrace();
		}
		return conn;
	}

	public static void main(String[] args){
		System.out.println(DbUtil.getConnection());	
	}
}


 

 

配置文件+类加载器(单例模式)连接数据库 配置文件+类加载器(单例模式)操作 数据库 立即下载

相关推荐

java 获取 配置文件 属性 单例模式 高效加载

通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。

Java单例模式读取MySql配置文件

【代码】Java单例模式读取MySql配置文件。

m0_56188609的博客 646

Polars简明基础教程一:Polars快速入门

在这个例子中,我们将添加一个列,其中包含每个舱位中乘客的最大年龄。在Python中(而不是特指Polars),当我们将代码包裹在括号中时,我们可以在新行上调用一个新方法——在这种情况下是select。在这里,我们看到一个使用表达式API的简单示例,其中我们在select语句中选择Pclass、Name和Age列(我们将在第3节中深入了解select语句)。表达式是一个函数,它接受一个Series(或DataFrame中的列)作为输入,并返回一个Series(或DataFrame中的列)。

sosogod的博客 3878

java单例模式(懒汉式)加载配置文件(properies)

话不多说,上代码!!! package com.hai.config; import java.io.IOException; import java.util.Properties; /** * 单例模式加载配置文件 * @author xiauhacker * */ public class Config { // 配置文件 private static Propertie...

XiauHacker的博客 945

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 884

EV1527 vs HS1527:固定码芯片的STM32解码避坑指南

本文深入解析EV1527与HS1527固定码芯片的技术差异,提供基于STM32的完整解码方案与稳定性优化策略。通过硬件接口配置、状态机实现及示波器诊断,解决工业遥控、安防报警等场景中的解码难题,特别针对时序差异和干扰问题给出实用解决方案。

o0p1q2r3的博客 329

单例模式的java配置文件读取器

单例模式的java配置文件读取器Spring的@Value注解很好用,直接给变量注入配置文件中的值。 这里用单例模式配合java的properties类实现一个配置文件读取器。 最佳实践是用自定义注解实现。配置文件test.propertiesport=8080 program.name=test 位于项目的根目录中。运行效果Main.javaimport cn.pangpython.test

珍惜时间 1816

别再瞎猜了!三角形接法PMSM的相电流到底怎么算?实测线电流转换公式与避坑指南

本文深入解析三角形接法永磁同步电机(PMSM)在FOC控制中的相电流计算误区,提供实测线电流转换公式与避坑指南。针对矢量控制系统中常见的√3换算错误,详细阐述正确的电流重构算法、硬件采样要点及软件优化技巧,帮助工程师实现精确控制并避免电机损坏。

weixin_30367873的博客 466

java读取配置文件的两种方式

【代码】java读取配置文件的两种方式。

weixin_53143083的博客 602

Android 的端智能学习路径

基础层:先补齐 Android 进阶(JNI / 性能优化)和 AI 基础概念,无需深入算法开发;核心层:掌握 TFLite 的模型加载、推理、量化,能完成基础端侧推理;落地层:聚焦实战场景(图像 / OCR / 语音),解决工程化问题(模型管理、异常处理);优化层:通过模型量化、硬件加速、工程优化,提升推理性能和用户体验。

hqiangtai的博客 344

时间序列分析(Time Series Analysis) 原理与代码实例讲解

时间序列分析(Time Series Analysis) - 原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词:时间序列预测,ARIMA模型,状态空间模型,SARIMA模型,机器学习

AI天才研究院 1246

读取配置文件,单例实现

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34270606的博客 227

Python 爬虫实战:共享单车数据采集全流程与市场洞察深度剖析

本文介绍了如何利用Python爬虫技术获取和分析共享单车运营数据。文章从项目背景出发,详细阐述了系统架构设计,包括数据抓取、清洗存储、分析和可视化模块。通过Scrapy、BeautifulSoup等工具实现数据采集,使用Pandas进行数据清洗,并借助Matplotlib进行可视化分析。实战部分展示了爬虫代码示例和城市分布、使用频率等分析案例。最终指出数据驱动分析有助于了解行业现状和市场趋势,未来可结合机器学习等方法进行深入洞察。该技术方案为共享单车行业研究提供了有效的数据支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2232

单例模式之读取配置文件

单例

cuishiying的专栏 2201

内存泄漏系列专题分析之二十一:高通相机CamX内存泄漏&内存占用分析--GPU内存拆解

通过上述debug方式,可以看到patch补丁可以顺利debug各种ION内存分布,可以通过它分析ION内存占用问题。同时我们还可以分析GPU内存泄漏问题,同样的方式可以看到所有的GPU内存分布,如果某个GPU内存持续增长,就极有可能内存泄漏,然后更具堆栈信息去分析代码,并解决GPU内存泄漏问题。!!

453

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用enum实现单例模式的方法来读取配置文件

    使用enum关键字来实现单例模式的好处是可以提供序列化机制,绝对防止多次实例化,即使是在面对复杂的序列化或者反射攻击的时候。—— 来自《Effective Java》 【1】配置文件test.properties #info a_text=I am text A b_text=I am text B 【2】枚举实例AppContext.java  package hhf.p...

東方海竹 1894

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JAVA设计模式---SINGLETON单例模式

概念:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式只应在有真正的“单一实例”的需求时才可使用 场景:读取配置文件、Socket链接、数据库资源等   例子: public class SingletonA {     private static SingletonA  s;    public static SingletonA  getIn...

iteye_8401的博客 156

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

单例模式例题——读取配置文件

AppConfig.properties: paramA=a paramB=b 单例类: public class Singleton { private static Singleton instance; private static String name; private Singleton() { } @SuppressWarnings("static-access") private Singleton(String name) { super(); this.na.

零碎@流年絮语 的博客 305

java 单例的创建

java 单例的创建

qq_40393187的博客 266

XML配置文件的读取

import java.io.FileInputStream;import java.io.InputStream;import java.util.Properties;public class ConfigReader {private Properties prop=new Properties();//私有构造方法private ConfigReader(){/** *1.配置文件在src

Dong 263

设计模式 之 单例模式解析

预计阅读时间:8分钟 1、单例模式的定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式结构图如下所示: Singleton:负责创建Singleton类自己的唯一实例,并提供一个getInstance的方法,让外部来访问这个类的唯一实例 在Java中,单例模式的实现又分为两种,一种称为懒汉式,一种称为饿汉式,其实就是在具体创建对象实例的处理上,有不同的实现方式。...

东晨雨的博客 209

读取配置文件——单例模式

import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class DBUtils { //使用单例模式读取配置文件 private static DBUtils dbUtils = new DBUtils(); public static DBUtils g

u010243595的博客 1414

戏说设计模式(三)单例模式

0. 前言 找一个人惺惺相惜 找一颗心心心相印 在这个宇宙我是独一无二 上面这是一句歌词哈,来自梁静茹的《给未来的自己》,我很喜欢听这首歌。当然,今天我并不是要说音乐,而是讨论设计模式,上面的歌词中有句“在这个宇宙我是独一无二”,而“独一无二”就是今天主角。很明显,除开平行宇宙之类的东西,每个人在全宇宙都是独一无二的。那么,在Java的世界里,怎么让一个实例成为独一无二的呢。答:使用单例模式。下

腹黑大壁花 517

Java读取.properties配置文件的方法

  在Java项目中,很多信息我们都可以放在配置文件中,增加程序的灵活性,如果是修改那个参数,只需要修改配置文件的信息就可以,而不需要去修改程序里面的参数代码。 Java有个Properties的类,类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串,通过Properties里面的load方法加载输入流读取的配置文件属性列表(键和元...

一个安静的程序员 163
上一篇: JAVA单例模式(Singleton)
下一篇: Java 线程安全问题—synchronized锁机制
Magina-Dota
博客等级 码龄16年 109粉丝 64原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值