Spring Data Autowire в FXML Controller (JavaFX)
Привет,
опитвам се да използвам Spring Data заедно с JavaFX. Искам като натисна бутон на апликацията да се запаметява в базата данни но не мога да свържа Bean-овете правилно.
Ето и кода:
Repository
package com.unibul.repositories;
import com.unibul.entities.Persona;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface PersonaRepository extends JpaRepository<Persona, Long> {
}
Service Interface
package com.unibul.services.personas;
import com.unibul.entities.Persona;
public interface PersonaService {
    Persona add(Persona persona);
}
Service Implementation
package com.unibul.services.personas;
import com.unibul.entities.Persona;
import com.unibul.repositories.PersonaRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service
@Transactional
public class PersonaServiceImpl implements PersonaService {
    private final PersonaRepository personaRepository;
    @Autowired
    public PersonaServiceImpl(PersonaRepository personaRepository) {
        this.personaRepository = personaRepository;
    }
    @Override
    public Persona add(Persona persona) {
        Persona persistedPersona;
        persistedPersona = personaRepository.save(persona);
        return persistedPersona;
    }
}
FXML Controller
@Component
public class PersonasController implements Initializable {
    @Autowired
    private PersonaService personaService;
    @FXML
    private JFXButton btn_submit;
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        //Handles all events on mouse clicks and actions
        eventHandler();
    }
    //Handles all events on mouse clicks and actions
    private void eventHandler() {
        btn_submit.setOnMouseClicked((MouseEvent event) -> {
            Persona persona = new Persona("some data");
            personaService.add(persona);
        }
    }
}
Initializer
@SpringBootApplication
public class MarketingApplication extends Application {
    private ConfigurableApplicationContext springContext;
    private Parent root;
    @Override
    public void init() throws Exception {
        springContext = SpringApplication.run(MarketingApplication.class);
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/layouts/Main.fxml"));
        fxmlLoader.setControllerFactory(springContext::getBean);
        root = fxmlLoader.load();
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        Scene scene = new Scene(root, 800, 600);
        primaryStage.setMinWidth(380);
        primaryStage.setMinHeight(500);
        Image image = new Image("/images/icon.png");
        primaryStage.getIcons().add(image);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    @Override
    public void stop() throws Exception {
        springContext.stop();
    }
    public static void main(String[] args) {
        launch(MarketingApplication.class, args);
    }
}
При пускането на този код ми гърми със NullPointerException на personaService.add(persona);
Проверих и самия personaService е null което не трябва да е така. Това явно значи че не съм вързал Bean-овете правилно. Някакви идеи как да го направя?
Благодаря предварително