- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一些“设计”建议。我有静态 JDBC 对象和我的“主入口类”,它们在其他类之间共享。
我的MainClass
看起来像这样:
public static Jdbc db1;
public static Jdbc db2;
connectDb(makeDirectConnection) // depending on runtime passed argument
public static connectDb(boolean makeDirectConnection) {
if(makeDirectConnection) // use direct connection
db1 = JdbcFactory.getInstance("db/config/main/db1.properties");
db2 = JdbcFactory.getInstance("db/config/main/db2.properties");
} else { // connect using via SSH tunnel (different host and port)
db1 = JdbcFactory.getInstance("db/config/tunnel/db1.properties");
db2 = JdbcFactory.getInstance("db/config/tunnel/db2.properties");
}
JdbcFactory
维护实例的Map
。
它工作正常,但如果我想对正在使用 db1
或 db2
的类进行单元测试,如果我不进行单元测试,我会得到空指针异常不执行MainClass.dbConnect()
让事情变得更糟 - 从测试类我什至需要一个不同的数据库设置,所以从 Test.class
我这样做:
Main.db1 = JdbcFactory.getInstance("db/config/test/db1.properties");
总的来说,这很困惑,我不喜欢。难道没有更好的方法来共享db1
和db2
吗?
此外,从 java run 参数定义的 boolean makeDirectConnection
阻止我使用 final
db1
和 db2
。有什么建议如何解决这个问题吗? (这取决于程序执行的环境 - 但我不想让它依赖于主机名或其他操作系统的东西。
最佳答案
因为您需要为测试和部署设置不同的默认实例。因此创建一个property file其中提到应使用哪个文件来为 db1
和 db2
创建默认实例。
要消除从单元测试代码中调用 MainClass.dbConnect()
的需要,只需创建一个静态 block 并在此处初始化 db1
和 db2
默认。例如如果属性文件是 defaultDB.properties
并具有以下内容:
DB1=db/config/test/db1.properties
DB2=db/config/test/db2.properties
然后使用以下内容:
static private Properties prop;
static {
prop = new Properties();
prop.load(new FileInputStream("defaultDB.properties"));
db1 = JdbcFactory.getInstance(prop.getProperty("DB1"));
db2 = JdbcFactory.getInstance(prop.getProperty("DB2"));
}
关于java - 不同类之间共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45792754/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!