JavaFX FXML contrôleur - constructeur vs méthode initialize

Mon Application classe ressemble à ceci:

public class Test extends Application {

    private static Logger logger = LogManager.getRootLogger();

    @Override
    public void start(Stage primaryStage) throws Exception {

        String resourcePath = "/resources/fxml/MainView.fxml";
        URL location = getClass().getResource(resourcePath);
        FXMLLoader fxmlLoader = new FXMLLoader(location);

        Scene scene = new Scene(fxmlLoader.load(), 500, 500);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

La FXMLLoader crée une instance de la manette correspondante (donnée dans la FXML fichier via fx:controller) en invoquant d'abord le constructeur par défaut et puis le initialize méthode:

public class MainViewController {

    public MainViewController() {
        System.out.println("first");
    }

    @FXML
    public void initialize() {
        System.out.println("second");
    }
}

La sortie est:

first
second

Alors, pourquoi ne le initialize méthode existe pas? Quelle est la différence entre l'utilisation d'un constructeur ou le initialize méthode pour initialiser le contrôleur de choses nécessaires?

Merci pour vos suggestions!

InformationsquelleAutor mrbela | 2016-01-14