java 单例 初始化_单例数据库对象启动时参数化初始化?
我正在尝试创建一个可供多个类使用的单个数据库实例(在Kotlin中使用 object 关键字) . 但是,我希望能够在创建单例实例之前指定数据库名称 .
由于单个对象无法使用参数进行初始化,因此我想知道我所做的是否有效,或者是否有更好的处理方式:
object DatabaseSingleton {
private lateinit var databaseName: String
private lateinit var mongoClient: MongoClient
val database: DatabaseContainer by lazy {
DatabaseContainer(databaseName, mongoClient)
}
fun init(databaseName: String, mongoClient: MongoClient): DatabaseSingleton {
this.databaseName = databaseName
this.mongoClient = mongoClient
return this
}
}
在另一个文件中
class DatabaseContainer(databaseName: String, val mongoClient: MongoClient) {
val db: MongoDatabase = mongoClient.getDatabase(databaseName)
val table: MongoCollection = db.getCollection(TABLE_NAME)
}
基本上,我通过对数据库容器使用延迟初始化来封装单个对象中的"database container",并提供lateinit vars来指定数据库名称并在singleton对象中具有初始化函数来初始化数据库容器 . 这是在我第一次启动应用程序时的主要方法中,我可以从一些本地属性文件加载数据库名称并调用 val database = DatabaseSingleton.init("DATABASE_NAME", client) 来创建需要多个其他类访问的数据库单例 .
这是一个做我想做的好方法,还是有更好的做事方式?
java 单例 初始化_单例数据库对象启动时参数化初始化?相关推荐
- 又一例SPFILE设置错误导致数据库无法启动
--======================================== --又一例SPFILE设置错误导致数据库无法启动 --============================== ...
- 【宋红康 MySQL数据库】【03】SQL概述_常见的数据库对象
持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][03]SQL概述_常见的数据库对象 SQL概述 什么是SQL SQL背景知识 SQL分类 DDL(Data Defini ...
- java 项目启动初始化_Spring项目启动时执行初始化方法
一.applicationContext.xml配置bean init-method="initKeyWord"> classpath:sensitive-word.xml ...
- mysql远程一会不用卡住_连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,...
连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的, 2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factor ...
- Springboot 启动时Bean初始化,启动异常-Assert.isTrue(condition,message) 报错
Springboot 启动时Bean初始化启动异常Assert.isTrue(condition,message) 报错,如果 condition为false 则会出现 java.lang.Illeg ...
- java时序图工具_基于时序数据库,实现百亿级话单实时全景监控分析
背景 随着流量业务的高速发展以及已经到来的5G时代,业务支撑系统的规模不断增大.服务不断增多,业务.应用和系统运行性能指标数据持续以指数级的速度增长,每日计费话单量已突破百亿.系统监控的实时性.准确性 ...
- java双下划线改单下划线_单下划线与双下划线的区别
内容目录 单下划线与双下划线的区别 Python用下划线作为前缀和后缀指定特殊变量和定义方法,主要有如下四种形式: 单下划线(_) 名称前的单下划线(如:_name) 名称前的双下划线(如:__n ...
- python单链表排序_单链表排序之选择排序
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目.单链表排序的关键是交换算法,需要额外考虑.选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序. C实现代码如下: Li ...
- 单开双控_单开双控怎么接线
单开双控怎么接线?单开单控和单开双控的区别是什么呢?作为非专业人士而言,可能对此并不是很了解.不过别担心,下面我就针对这些疑问,来为大家简单介绍下. 单开双控怎么接线 方法很简单,就是先将这2个开关的 ...
- Java树形转扁平_多层嵌套map对象转扁平化map
将深度嵌套的map对象转换为扁平化的map对象输出. import org.apache.commons.lang3.StringUtils; import java.util.HashMap; im ...
最新文章
- Makefile中的几个调试方法
- mysql数据库安全配置规范_MySQL数据库安全配置规范操作
- 阿里 10 年:一个普通技术人的成长之路
- 路径规划后对路径进行平滑处理
- MySQL学习笔记(6)之设计范式
- SAP Leonardo机器学习图片相似度打分API的测试报告
- thinkphp-where-数组条件-普通查询
- CentOS7 安装nginx
- 前端电子表数字字体_爬虫:如何优雅应对字体反爬
- Mapper XML Files详解
- 在超链接href中实现form的提交
- UVA11582 Colossal Fibonacci Numbers!【快速模幂+数列模除】
- 祝各位朋友开工顺利,业务蒸蒸日上
- 图像特征提取之LBP算法
- php获取用户手机imei id,获取手机设备信息 IMEI
- 服务案例|TAS系统安全深度威胁发现案例
- 解决微信公众平台图片不可引用
- 如何才能达到阿里 P7 水平 ?
- 三角警示牌emark认证详解
- 03异常(Exceptions)异常