Мне нужно написать миграцию на 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();
Я не могу этого сделать.
Есть ли способ решить эту проблему?
Я не нашел способа легально @Inject bean-компоненты в миграцию пролетного пути. Поэтому, если для вашей миграции требуются некоторые данные из БД, вы можете получить их напрямую из БД, используя соединение. Если вам нужны какие-то данные из внешних сервисов — я решил использовать okhttp, чтобы получить их.