Внедрение зависимостей в приложение JavaFX с помощью Spring BootJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Внедрение зависимостей в приложение JavaFX с помощью Spring Boot

Сообщение Anonymous »

Как правильно использовать внедрение зависимостей в приложении Spring Boot?
Мое программное обеспечение имеет главное окно JavaFX и несколько вложенных диалоговых окон, которые открываются и закрыто из главного окна. Мне нужно использовать клиенты REST в поддиалогах, которые внедряются Spring Boot. Однако для инициализации каждого экземпляра клиента требуется параметр конструктора.
В итоге я получаю множество REST-клиентов в контроллере моего главного окна, которые затем передаются контроллерам подчиненного окна. диалоги. Есть ли лучший способ реализовать это, чтобы избавиться от всех параметров конструктора?
@Component
@Scope("prototype")
public class MainController {

private final FirstClient first;
private final SecondClient second;
private final ThirdClient third;

@Autowired
public MainController(FirstClient first, SecondClient second, ThirdClient third) {
this.first = first;
this.second = second;
this.third = third;
}

private void openSubDialog() {
// ...
SubController subController = new SubController(first, second);
// ...
}

private void openAnotherSubDialog() {
// ...
AnotherSubController anotherSubController = new AnotherSubController(first, third);
// ...
}

}

Мои классы контроллеров помечены @Component и @Scope("prototype").
@Component
@Scope("prototype")
public class SubController {

private final FirstClient first;
private final SecondClient second;

@Autowired
public SubController(FirstClient first, SecondClient second) {
this.first = first;
this.second = second;
}

private void doSomething() {
var result = first.callSomeService();
}

}

И, наконец, мои REST-клиенты выглядят примерно так:
@Service
public class FirstClient {

public SomeType callSomeService() {
return restClient.getSomeData();
}

}


Я ищу способ напрямую внедрить клиентов REST в контроллеры поддиалогов без необходимости добавлять параметры конструктора и передавать их. вниз от основного вида. В псевдокоде примерно так:
@Component
@Scope("prototype")
public class ImprovedController {

@InjectHereDirectly
private final FirstClient first;

@InjectHereDirectly
private final SecondClient second;

// No constructor needed

private void doSomething() {
var result = first.callSomeService();
}

}


Подробнее здесь: https://stackoverflow.com/questions/783 ... pring-boot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»