我正在尝试创建一个可供多个类使用的单个数据库实例(在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 单例 初始化_单例数据库对象启动时参数化初始化?相关推荐

  1. 又一例SPFILE设置错误导致数据库无法启动

    --======================================== --又一例SPFILE设置错误导致数据库无法启动 --============================== ...

  2. 【宋红康 MySQL数据库】【03】SQL概述_常见的数据库对象

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][03]SQL概述_常见的数据库对象 SQL概述 什么是SQL SQL背景知识 SQL分类 DDL(Data Defini ...

  3. java 项目启动初始化_Spring项目启动时执行初始化方法

    一.applicationContext.xml配置bean init-method="initKeyWord"> classpath:sensitive-word.xml ...

  4. mysql远程一会不用卡住_连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,...

    连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的, 2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factor ...

  5. Springboot 启动时Bean初始化,启动异常-Assert.isTrue(condition,message) 报错

    Springboot 启动时Bean初始化启动异常Assert.isTrue(condition,message) 报错,如果 condition为false 则会出现 java.lang.Illeg ...

  6. java时序图工具_基于时序数据库,实现百亿级话单实时全景监控分析

    背景 随着流量业务的高速发展以及已经到来的5G时代,业务支撑系统的规模不断增大.服务不断增多,业务.应用和系统运行性能指标数据持续以指数级的速度增长,每日计费话单量已突破百亿.系统监控的实时性.准确性 ...

  7. java双下划线改单下划线_单下划线与双下划线的区别

    内容目录 单下划线与双下划线的区别 ​ Python用下划线作为前缀和后缀指定特殊变量和定义方法,主要有如下四种形式: 单下划线(_) 名称前的单下划线(如:_name) 名称前的双下划线(如:__n ...

  8. python单链表排序_单链表排序之选择排序

    单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目.单链表排序的关键是交换算法,需要额外考虑.选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序. C实现代码如下: Li ...

  9. 单开双控_单开双控怎么接线

    单开双控怎么接线?单开单控和单开双控的区别是什么呢?作为非专业人士而言,可能对此并不是很了解.不过别担心,下面我就针对这些疑问,来为大家简单介绍下. 单开双控怎么接线 方法很简单,就是先将这2个开关的 ...

  10. Java树形转扁平_多层嵌套map对象转扁平化map

    将深度嵌套的map对象转换为扁平化的map对象输出. import org.apache.commons.lang3.StringUtils; import java.util.HashMap; im ...

最新文章

  1. Makefile中的几个调试方法
  2. mysql数据库安全配置规范_MySQL数据库安全配置规范操作
  3. 阿里 10 年:一个普通技术人的成长之路
  4. 路径规划后对路径进行平滑处理
  5. MySQL学习笔记(6)之设计范式
  6. SAP Leonardo机器学习图片相似度打分API的测试报告
  7. thinkphp-where-数组条件-普通查询
  8. CentOS7 安装nginx
  9. 前端电子表数字字体_爬虫:如何优雅应对字体反爬
  10. Mapper XML Files详解
  11. 在超链接href中实现form的提交
  12. UVA11582 Colossal Fibonacci Numbers!【快速模幂+数列模除】
  13. 祝各位朋友开工顺利,业务蒸蒸日上
  14. 图像特征提取之LBP算法
  15. php获取用户手机imei id,获取手机设备信息  IMEI
  16. 服务案例|TAS系统安全深度威胁发现案例
  17. 解决微信公众平台图片不可引用
  18. 如何才能达到阿里 P7 水平 ?
  19. 三角警示牌emark认证详解
  20. 03异常(Exceptions)异常

热门文章

  1. 设计模式(12)——状态模式
  2. 数值分析(1)-绪论:误差
  3. karto探秘之文章索引
  4. 多模态multi-modal 与多视图multi-view
  5. $ 在 JQuery 里的意思
  6. Scala Singleton对象
  7. 【GDB调试学习笔记】调试程序段错误
  8. 【LeetCode】【数组】题号:*697,相同度的最短连续子数组
  9. 【资源挖掘】免费DEM数据下载
  10. SimpleGIS在线地图插件