JavaFX 애플리케이션에서는 JPA 저장소 또는 Spring 서비스와 같은 종속성을 init(), start() 및 stop()과 같은 수명 주기 메서드에 주입해야 하는 경우가 많습니다. 그러나 이는 기존 JavaFX 종속성 주입 메커니즘의 제한으로 인해 어려울 수 있습니다.
JavaFX에서 종속성 주입을 달성하는 방법에는 여러 가지가 있습니다. 봄:
1. SpringBoot 애플리케이션 사용:
JavaFX 애플리케이션을 SpringBoot 애플리케이션과 통합하는 것은 Spring의 전체 종속성 주입 기능에 액세스하는 간단한 방법입니다. 애플리케이션에 @SpringBootApplication으로 주석을 추가하면 Spring 컨텍스트를 활용하고 자동 배선을 사용하여 컨트롤러와 Bean에 종속성을 주입할 수 있습니다.
2. Spring이 아닌 관리 클래스에 Bean 주입:
JavaFX 애플리케이션을 Spring과 별도로 유지하려는 경우 Spring의 AutowireCapableBeanFactory를 사용하여 수동으로 종속성을 주입할 수 있습니다. init() 메소드에서 autowireBeanProperties()를 사용하여 애플리케이션 클래스 인스턴스에 빈을 주입할 수 있습니다.
3. 사용자 정의 범위 지정 사용:
JavaFX 컨트롤러에 @Scope("prototype") 주석을 추가하면 컨트롤러의 각 인스턴스가 새로운 종속성 세트로 생성되도록 할 수 있습니다. 이는 서로 다른 뷰에 대해 별도의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!