我需要确保使用mongock进行数据迁移。@ChangeUnit类保存迁移的逻辑。它有一个带有@Value注释的字段,该字段始终为null,即使我在application.properties中正确初始化了
mongock.migration-scan-package=my.package
login-secret=test然后,MigrationConfiguration看起来如下:
@ChangeUnit(id = "test", order = "001", author = "test")
@RequiredArgsConstructor
@Configuration
public class InitUsersChangeLog {
private final MyService service;
private final MongoTemplate template;
@Value("${login-secret}")
private String LOGIN;
@Execution
public void initUser() {
service.create(User.builder().login(LOGIN).build());
}
}主修班:
@EnableMongock
@SpringBootApplication
public class MailServiceApplication {...}我的假设是,这个值没有正确地注入到MongockConfiguration bean中。我尝试在属性中手动配置bean (不使用mongock.gration-scan-Package=my.Package),但没有成功。
发布于 2022-06-27 14:22:21
由于Mongock目前不支持@Value注释,所以可以尝试从Environment bean中使用Environment方法。可以使用构造函数或Lombok注释注入与其他bean相同的环境bean。
你想要改变这一点:
@Value("your.key.property")对此:
private final Environment env;
public void method(){
env.getProperty("your.key.property")
}发布于 2022-06-20 11:17:45
Mongock目前不支持通过字段o方法参数进行@value注入。我们将在未来版本5中的一个小版本中提供这一点,但我们还不能给出日期。
发布于 2022-07-14 09:21:18
扩展MichalJ的答案,这是绝对有效的。我想补充的是,changeUnits不是由Mongock通过Springboot检索的,而是由Mongock独立处理的。因此注释@Configuration、@Component等不会被考虑,它们甚至可能具有破坏性。
与此相关的是,这段代码不起作用,至少在不久的将来是不行的:
@Value("${login-secret}")
private String LOGIN;首先,如前所述,Mongock目前不支持值,但第一种方法将要求构造函数参数具有该@Value("${login-secret}"),而不是在字段级别。
https://stackoverflow.com/questions/72676815
复制相似问题