2016-10-06 5 views
1

У меня есть собственная библиотека со всеми sprocs для создания таблицы аудита и триггеров для таблиц, которые я буду добавлять в будущем в качестве сценариев миграции и I хотите, чтобы эти sprocs были развернуты в моей схеме до того, как будет выполнена какая-либо миграция. У меня есть определенный DDL, который это делает. Причина, по которой я хочу, чтобы это было так, когда у меня есть новая таблица, которую мне нужно добавить, я могу вызвать этот sproc для создания этих триггеров и таблиц аудита. Таким образом, мои сценарии миграции были бы более чистыми и более простыми. Кроме того, это помогло бы максимально сгладить сценарии H SQL и oracle, насколько это было бы возможно, так как мне бы не хотелось иметь аудит или триггеры для H SQL при работе с dev.Flyway для выполнения некоторых сценариев перед миграцией для предоставления некоторых sprocs в моей схеме

Я извлек из библиотеки в папку DLL, запускающую sprocs, и она находится в отдельной папке, так как я хочу, чтобы они были отделены от моих сценариев миграции.

У меня нет мухи пролета, потому что весенний ботинок сделал это для меня. Я не вижу никакой конфигурации свойств для создания обратных вызовов.

Я использую весеннюю загрузку 1.3.3-RELEASE и предпочитаю использовать пролет 3.2.1, который поставляется с родительскими зависимостями весны.

Может ли кто-нибудь предложить лучший способ сделать это?

Если есть более высокая версия пролета, поддерживающая это, вы бы рекомендовали переопределить конкретную версию пролетного пути, предоставленную весенним багажом с новым?

ответ

1

Вариант 1:

Использование callbacks. Версия Flyway версии 3.x имеет поддержку, которая была улучшена в версии 4. Это включает в себя крючки для beforeMigrate, beforeEachMigrate и beforeBaseline, что и есть то, что вам нужно.

Есть несколько способов сделать это:

  1. Добавить именованные файлы SQL (например, beforeMigrate.sql, beforeEachMigrate.sql) в каталог кочевок.

  2. Настройте свои классы Java с обратным вызовом с помощью свойства callbacks.

  3. spring-boot предлагает FlywayMigrationStrategy, чтобы подключиться к жизненному циклу и получить доступ к объекту Flyway. См. spring-boot Flyway documentation.

Вариант 2.

Добавьте эти хранимые процедуры V__1 таким образом, они могут быть отозваны из каждой последующей миграции. Значит, вам придется отказаться от своего желания отделить их от миграции, конечно, но гораздо проще.

+0

@Component общественного класса FlywayCallbackService реализует FlywayCallback { } @Component общественного класса FlywayFactory реализует FlywayMigrationStrategy { общественного недействительными мигрирует (пролетный путь) { пролетный путь.setCallbacks (новый FlywayCallbackService()); flyway.migrate(); } } – user2041844

0
@Component 
public class FlywayFactory implements FlywayMigrationStrategy {  

@Override  
public void migrate(Flyway flyway) {   
flyway.setCallbacks(new FlywayCallbackService());   
flyway.migrate();  
} 
} 

Это сделало работу. спасибо за ответ @markdsievers