У меня есть следующая структура:
- JavaFX-проект для графического интерфейса с некоторыми классами Service для этого.
- Базовый проект, содержащий бизнес-логику и логику постоянства.
- ядро подключено к графическому интерфейсу через Maven:
.
<dependency>
<groupId>com.andwari.core</groupId>
<artifactId>my-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Моя цель - обеспечить инъекцию и подобные вещи сваркой Jboss.
Я успешно реализовал это в проекте JavaFX с этим руководством: http://fxapps.blogspot.com/2017/10/using-cdi-20-in-javafx-application.html
Таким образом, внедрение отлично работает в этом проекте, но НЕ в подпроекте (ядре). Как сделать так, чтобы контейнер базовых проектов также был известен контейнеру?
Обучающие программы и объяснения по этому поводу очень редки или слишком конкретны, поэтому я понятия не имею, как это работает.
Мой код установки 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 является базовым. Таким образом, контейнер, очевидно, не может справиться с этим. Как мне сделать эти классы инъекционными ??