子项目中也有带有Weld的JavaFX Project

时间:2018-11-04 16:20:07

标签: javafx dependency-injection cdi weld

我具有以下结构:

  • 一个用于GUI内容的JavaFX项目,其中包含一些Service类。
  • 一个包含业务逻辑和持久性逻辑的核心项目。
  • 核心通过maven链接到gui:

<dependency>
    <groupId>com.andwari.core</groupId>
    <artifactId>my-core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

我的目标是提供带有jboss焊缝的Injection等东西。

我通过本教程http://fxapps.blogspot.com/2017/10/using-cdi-20-in-javafx-application.html

在JavaFX项目中成功实现了它

因此,注入在该项目中工作正常,但在子项目(核心)中却没有。如何使容器也知道核心项目类? 关于它的教程和解释很少或太具体了,所以我不知道它是如何工作的。

我的CDI设置代码基本上与本教程中的代码相同。 (https://github.com/AprendendoJava/javafx-basic-tutorials/tree/master/blog-javafx/javafx-cdi2

@SuppressWarnings("serial")
@Override
public void start(Stage primaryStage) {
    SeContainerInitializer initializer = SeContainerInitializer.newInstance();
    final SeContainer container = initializer.initialize();
    container.getBeanManager().fireEvent(primaryStage, new AnnotationLiteral<StartupScene>() {});
}

示例:

我有一个像这样的javafx控制器:

public class EventPlayerSelectionController {
    ...
    @FXML
    private Button btnStartEvent;

    @Inject
    private TabPlayerService tabPlayerService;
    ...
    //someMethods
}

由于该服务在JavaFX项目中,因此该注入工作正常。但是在TabPlayerService中,我有:

public class TabPlayerService {

    @Inject
    private PlayerService playerService;
    //some methods
}

PlayerService类来自核心。因此,容器显然无法处理它。如何使这些类可注射?

0 个答案:

没有答案