Я очень новичок в Spring Boot (или даже в Spring).Я хочу создать класс Singleton, который управляет моей базой данных jdbc.После того, как (успешные тесты) я попытался разделить свой основной класс и этот класс DBHandler, я получаю исключение NullPointerException при попытке вызвать метод для объекта моей базы данных в моем классе DBHandler.
Возможно, мне нужна некоторая аннотация для моего класса DBHandler?Это правильный способ создания класса обработчика базы данных в Spring Boot?
Основной класс:
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application implements CommandLineRunner {
public static void main(String args[]) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... strings) throws Exception {
DBHandler db = DBHandler.getDBHandler();
db.deleteTable();
db.createTable();
}
}
Класс JDBC Handler Singleton, который я хочу заполнить функциями для взаимодействия с моей базой данных, которыеЯ могу звонить из других классов.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
public class DBHandler {
@Autowired
JdbcTemplate database;
private static DBHandler instance;
private DBHandler() {
}
public static DBHandler getDBHandler() {
if (instance == null) {
synchronized (DBHandler.class) {
if (instance == null) {
instance = new DBHandler();
}
}
}
return instance;
}
public void createTable() {
database.execute("CREATE TABLE users(id SERIAL, accountName VARCHAR(255), validated VARCHAR(255), validationCode VARCHAR(255), updateDate DATETIME)");
}
public void deleteTable() {
database.execute("DROP TABLE IF EXISTS users");
}
}
Все работает нормально, когда у меня есть база данных Autowired и функции в основном (Application) классе.