这是我用来建立jdbc连接的代码。
我可以使用下面显示的getInstance()
吗?
可以使用MysqlConnection
在其他类中调用MysqlConnection.getInstance()
类对象。
这段代码段工作正常。但我想知道,
这段代码不正确吗?我可以这样用吗?
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();
}
}
}
}
答案 0 :(得分:1)
对SqlConnection
对象使用Singleton不是一个好主意
见getting db connection through singleton class
但如果您仍想将其设为单身,请替换:
public class MysqlConnection {
//use singleton design patern
private static MysqlConnection instance;
public static MysqlConnection getInstance(){
if(instance == null){
instance = new MysqlConnection();
}
return instance;
}
使用enum:
public enum MysqlConnection {
INSTANCE;
public static MysqlConnection getInstance(){
return INSTANCE;
}
有关详细信息,请参阅Implementing Singleton as Enum in Java
答案 1 :(得分:0)
您应该使用依赖注入将依赖项注入需要它们的类中。
可在此处找到一个示例:http://www.journaldev.com/2394/dependency-injection-design-pattern-in-java-example-tutorial
单身人士只是另一个全球性的,并且是你在这里使用它的方式的反模式。 What is so bad about singletons?