Внедрить quarkus bean в миграцию на основе Java

Мне нужно написать миграцию на flyway с помощью BaseJavaMigration или любого другого подхода, позволяющего реализовать подобную логику.

Но у меня нет контекста Quarkus, поэтому я не могу использовать @Inject внутри.

import javax.inject.Inject;

import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;

@ApplicationScoped  // this is not a valid solution
public class V20230329190657__MyMigration extends BaseJavaMigration {

    @Inject         // this is not a valid solution
    MyBean1 myBean1;

    @Inject         // this is not a valid solution
    @RestClient
    MyBean2 myBean2;

    @Override
    public void migrate(Context context) throws Exception {
        // call to myBean1, myBean2 to grab some info
        // HERE will be my migration, Statement, Connection, execution, etc.
    }
}

Также, если я попытаюсь получить экземпляры внутри метода migrate любым способом, например:

    MyBean1 myBean1 = CDI.current().select(MyBean1.class).get();
    MyBean2 myBean2 = Arc.container().select(MyBean2.class).get();

Я не могу этого сделать.

Есть ли способ решить эту проблему?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не нашел способа легально @Inject bean-компоненты в миграцию пролетного пути. Поэтому, если для вашей миграции требуются некоторые данные из БД, вы можете получить их напрямую из БД, используя соединение. Если вам нужны какие-то данные из внешних сервисов — я решил использовать okhttp, чтобы получить их.

Другие вопросы по теме