最近帮人在写一个小型的局域网的C/S的系统。由于系统需要登录,所以我想在登录前先连接数据库,判断数据库是否连接正常。
我的数据库连接类是一个单例的DBconn类。DBconn类通过一个单例Env类获得properties类型文件的数据。我在Application类中获得DBconn的实例后,判断连接是否为空。如果为空,就修改properties类型的配置文件。
文件可以正常修改,但是由于是DBconn由于是单例,所以无法修改。
于是就想通过让系统重启一遍,让类重新加载。所以就在Application类中使用Application.EXIT_RESTART进行重启。
但是结果还是一样的。文件可以修改,但是DBConn从Env类获得的数据还是旧的数据,没有发生变化。
有什么办法可以让类重新加载吗?以便于重新获得文件中的配置信息?
那你这样。你定义一个final类型的Map存放所有的单例。这就是工厂方法模式的几个单例的情况,都可以用。不过你这里就一个单例,限制好。
这样你在你的生成DBConn的类里判断先得到的是不是空,不是空就放到Map里,可以使用了,如果空的话就修改properties文件,重新获取DBConn,放到Map里。
关键:你的DBConn不能是final的,只要保证Map是final的就ok了
你这个properties文件配置的是对的就一直会有连接的,不用在修改properties的啦!