JavaFX SpringBoot SpringJDB C Приложение SQLite CRUD - настройка - PullRequest
0 голосов
/ 28 февраля 2020

Я разрабатываю приложение JavaFX CRUD с SpringBoot + SpringJDB C + SQLite. Я использую Eclipse IDE.

STORY: Я разрабатываю это приложение как процесс StepByStep. И я получил CRUD-приложение JavaFX + SQLite с подключением Old School JDB C. Но после интеграции SpringBoot + SpringJDB C я получаю ошибку. Я думаю, что ошибка при передаче конфигурации приложения для всех файлов.

Main.Class

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        Application.launch(MyApplication.class, args);
    }

}

AND MyApplication.Class (без аннотации)

public class MyApplication extends Application {

    protected ConfigurableApplicationContext applicationContext;

    @Override
    public void init() throws Exception {
        applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
    }

    @Override
    public void stop() throws Exception {
        applicationContext.close();
        Platform.exit();
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("ExYouTub");
        stage.setOnCloseRequest(x -> {
            Platform.exit();
        });
        stage.setResizable(false);
        stage.setScene(new Scene(FXMLLoader.load(getClass().getResource("../Sample.fxml"))));
        stage.show();
    }

}

AND AppConfig.class

@Configuration
@ConditionalOnClass(DataSource.class)
@Profile("sqlite")
@ComponentScan(basePackages= "com.fz")
@PropertySource("classpath:data/config.properties")
public class AppConfig {

    @Autowired
    Environment environment;

    private final String DB_URL = "fz.db.url";

    @Bean
    DataSource dataSource() {
        final DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
        driverManagerDataSource.setUrl(environment.getProperty(DB_URL));
        return driverManagerDataSource;
    }
}

AND SampleController.class

@Controller
public class SampleController implements Initializable {
//-- un-necessary lines are ignored to copy

    @Autowired
    @Qualifier("studentsDAOImpl")
    private StudentsDAO studentsDAO;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        tableViewList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        setColumnProperties();
        loadStudentsDetails();
    }

    private void loadStudentsDetails() {
        studentsList.clear();
        studentsList.addAll(studentsDAO.getAllStudents()); // this is line 83
        tableViewList.setItems(studentsList);
    }
}

AND Отчет об ошибке

Caused by: java.lang.NullPointerException
    at com.fz.SampleController.loadStudentsDetails(SampleController.java:83)
    at com.fz.SampleController.initialize(SampleController.java:78)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573)
    ... 17 more

И до сих пор мое предположение об этой ошибке таково, что конфигурация не работает должным образом - я так думаю. Мне нужно предложение и помочь мне улучшить это.

...