這是我用來建立jdbc連接的代碼。 我可以使用下面顯示的getInstance()
。 MysqlConnection
類對象可以使用MysqlConnection.getInstance()
在其他類中調用。 此代碼段運作正常。但我想知道, 是這段代碼不正確?我可以這樣使用嗎?可以用Mysql jdbc連接使用Singleton模式嗎?
public class MysqlConnection {
//use singleton design patern
private static MysqlConnection instance;
public static MysqlConnection getInstance(){
if(instance == null) {
instance = new MysqlConnection();
}
return instance;
}
// init database constants
private static final String DATABASE_DRIVER = "com.mysql.jdbc.Driver";
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/storetest";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
private static final String MAX_POOL = "250";
// init connection object
private Connection connection;
// init properties object
private Properties properties;
// create properties
private Properties getProperties() {
if(properties == null) {
properties = new Properties();
properties.setProperty("user", USERNAME);
properties.setProperty("password", PASSWORD);
properties.setProperty("MaxPooledStatements", MAX_POOL);
}
return properties;
}
// connect database
public Connection connect() {
if (connection == null) {
try {
Class.forName(DATABASE_DRIVER);
connection = (Connection) DriverManager.getConnection(DATABASE_URL, getProperties());
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
return connection;
}
// disconnect database
public void disconnect() {
if(connection != null) {
try {
connection.close();
connection = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
在完全不同的情況下,*這是一個破碎的Singleton *。你需要*調用'getInstance()'和'disconnect()'同步* – TheLostMind
你應該使用依賴注入來注入你的sqlconnection到那些需要它的類。辛格爾頓只是另一個全球。 –