如何将Flyway集成到我们的spring-batch jdbc应用程序中

时间:2018-06-30 13:25:43

标签: spring flyway

我们有一个带有DB2 jdbc数据源的spring-batch应用程序。想要向我们的应用程序添加Flyway迁移功能。我一直在探索这个article,这非常有道理,除了提到如何指定'entityManagerFactory'的部分之外-它们的示例适用于使用Hibernate的JPA,看起来像这样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static System.Math;


namespace Syncfusion
{
    public class Calc
    {
        public static double Pythagorean(double a, double b)
        {
            double cSquared = Pow(a, 2) + Pow(b, 3);
            return Sqrt(cSquared);
        }
    }


    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        void Button_Click(object sender, RoutedEventArgs e)
        {
            double hypotenuse = Calc.Pythagorean(2, 4);
            MessageBox.Show("Hypotenuse: " + hypotenuse);
        }
    }
}

我们的应用程序是用于db2的简单JDBC数据源。如何定义<!-- Entity Manager Factory configuration --> <bean id="entityManagerFactory" class="o.s.orm.jpa.LocalContainerEntityManagerFactoryBean" depends-on="flyway"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="o.s.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="${jpa.database}"/> </bean> </property> </bean> ,以使Spring将其识别为托管Bean?我什至需要指定entityManagerFactory bean配置吗?

1 个答案:

答案 0 :(得分:1)

否,您不必指定entityMangerFactory bean。飞行路线的迁移不必一定是豆子。 这是飞行路线迁移的示例配置:

@Configuration
public class FlywayInitializer {

  @Autowired
  private DataSource dataSource;

  @PostConstruct()
  private void startMigrations() {

    Flyway flyway = new Flyway();
    flyway.setDataSource(dataSource);
    flyway.setLocations("db/migrations");
    flyway.setSchemas("public");
    flyway.setSqlMigrationPrefix("H");
    flyway.migrate();
  }
}

我们首先创建一个新的Flyway对象。 javax.Sql.DataSource是flyway唯一需要的bean。 Flyway需要此bean中的数据,以便它可以连接到数据库。 然后,我们配置迁移的位置,flyway的架构(第一个架构是将创建schema_version表的架构)以及迁移的迁移前缀(例如,我的迁移如下所示) : H1__init_db.sql )。

还有许多其他属性可以设置。配置完飞行路线对象后,请调用migrate方法以执行迁移。