在 JavaFX 应用程序中,通常需要将依赖项(例如 JPA 存储库或 Spring 服务)注入生命周期方法(例如 init()、start() 和 stop())。然而,由于传统 JavaFX 依赖注入机制的限制,这可能具有挑战性。
有多种方法可以在 JavaFX 中实现依赖注入:春天:
1。使用 SpringBoot 应用程序:
将 JavaFX 应用程序与 SpringBoot 应用程序集成是访问 Spring 完整依赖项注入功能的直接方法。通过将您的应用程序注释为 @SpringBootApplication,您可以利用 Spring 上下文并使用自动装配将依赖项注入控制器和 bean。
2.将 Bean 注入非 Spring 托管类:
如果您希望将 JavaFX 应用程序与 Spring 分开,您可以使用 Spring 的 AutowireCapableBeanFactory 手动注入依赖项。在 init() 方法中,您可以使用 autowireBeanProperties() 将 Bean 注入到应用程序类实例中。
3.使用自定义作用域:
通过使用 @Scope("prototype") 注释 JavaFX 控制器,您可以确保控制器的每个实例都是使用一组新的依赖项创建的。这在您需要为不同视图维护单独的 ViewModel 的情况下非常有用。
考虑以下使用 Spring 自动装配的 JavaFX 控制器示例:
<code class="java">@Component @Scope("prototype") public class DemoController { @Autowired private EmployeeRepo employeeRepo; public void initialize() { List<Employee> employees = employeeRepo.findAll(); // Handle the retrieved employees here... } }</code>
在 JavaFX 应用程序的 init() 方法中,加载 Spring 上下文并使用 fxmlLoader.setControllerFactory() 方法允许 Spring 将依赖项注入到 FXML 控制器中。
<code class="java">public void init() throws Exception { ApplicationContext springContext = SpringApplication.run(DemoApplication.class); FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/sample.fxml")); fxmlLoader.setControllerFactory(springContext::getBean); root = fxmlLoader.load(); }</code>
通过利用其中一种方法,您可以使用 Spring 在 JavaFX 中成功实现依赖项注入,从而使您能够访问应用程序中的 JPA 存储库、服务和其他依赖项生命周期方法和组件。
以上是如何使用 Spring 将依赖注入集成到我的 JavaFX 应用程序中,以及实现它的不同方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!