gpt4 book ai didi

java - Flyway DB迁移-如何访问应用服务(Spring配置)

转载 作者:行者123 更新时间:2023-12-01 06:25:45 30 4
gpt4 key购买 nike

主要问题 - 这可能看起来像是一个基本的飞行问题,我可能(以某种方式)在我的研究过程中错过了这个问题,但是 - 尝试时是否可以访问应用程序服务(spring 配置)使用flyway迁移数据?下面有一些细节 -

其他详细信息 -

  • 我知道我们无法注入(inject) Spring 数据服务等( learnt from thisSO question )。我从数据访问点了解到这一点查看。
  • 但是我们可以不使用(通过注入(inject))任何其他应用程序服务吗要么在使用 Flyway 时(我搜索了示例 - 但没有运气好,飞行路线文档中也没有提供详细信息)
  • 假设我们不能使用任何 Spring 服务(我找到了一些方法解决这个问题),我们可以访问声明的属性吗application.properties/.yml(这似乎也不可能)。

将上述内容放在我们的要求中 - 我们已向几个表中添加了几个新字段,并且作为版本的一部分,我们希望用数据填充这些列。这需要我们(或flyway)执行以下算法 -

  • 从第一个表中获取数据。
  • 使用每行中的一些数据,通过 API 查找更多数据打电话。
  • API 的 URL 是特定于环境的(因此第三点上)。
  • 将从 API 返回的数据更新到新添加的列中。
  • 对下一个表格重复上述步骤。

附注- 我知道,添加依赖于同一个表中其他列的列不符合第三正常等。但由于本文之外的原因,这是必需的。

技术堆栈 -

  1. Spring 启动 1.3.x
  2. Flyway 4.0.3
  3. 使用 Java 迁移

我尝试过的几个例子如下 -

我的迁徙路线如下。

public class R__MigrationYeah implements SpringJdbcMigration {

@Value("${mypath.subpath}") // this does not work !
private String someStringIwannaUse;


@Inject // this does not work either (even with Autowired or Const. injection)!
private MyService myService;

}

我看过一些帖子/博客,其中有关于如何配置 Flyways MigrationResolver 或 ConfigurationAware 等的复杂细节 - 并且不确定他们是否解决了这个问题(即使他们解决了 - 只是编写一个快速的代码需要大量的工作)迁移脚本 - 这是唯一的方法吗?)。

最后 - 我知道我错过了一些东西,因为如果我们必须编写 Flyway Java 代码而无法通过 Spring 使用任何现有的应用程序类,那么这与编写独立的迁移没有什么不同项目(因此,除了提供数据库连接之外,flyway 没有增加任何值(value)) - 我确信情况不会如此。

任何帮助都会很棒!

最佳答案

无法在 Flyway 迁移中使用依赖项注入(inject)。

flyway 的下一个版本将支持 spring bean 的依赖注入(inject)。请参阅Github issue更多细节。上Stack Overflow是当前可用版本的解决方法。

关于java - Flyway DB迁移-如何访问应用服务(Spring配置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773039/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com