LiquibaseConfig.java >
Код: Выделить всё
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(SpringLiquibase.class)
@EnableConfigurationProperties({DataSourceProperties.class, LiquibaseProperties.class})
public class LiquibaseConfig extends LiquibaseAutoConfiguration.LiquibaseConfiguration {
public LiquibaseConfig(LiquibaseProperties properties, ApplicationContext applicationContext) {
super(properties);
SetDivisionToWidgetsMigrationTask.setApplicationContext(applicationContext);
}
}
Код: Выделить всё
public class SetDivisionToWidgetsMigrationTask implements CustomTaskChange {
@Nullable
private static ApplicationContext applicationContext;
public static void setApplicationContext(ApplicationContext applicationContext) {
SetDivisionToWidgetsMigrationTask.applicationContext = applicationContext;
}
@Override
public void execute(Database database) throws CustomChangeException {
if (applicationContext == null) {
throw new ApplicationContextException("Application context is not assigned");
}
WidgetRepository widgetRepository = applicationContext.getBean(WidgetRepository.class);
DivisionRepository divisionRepository = applicationContext.getBean(DivisionRepository.class);
DivisionConverter divisionConverter = applicationContext.getBean(DivisionConverter.class);
Map widgetsByTenantId = widgetRepository.findAll()
.stream()
.collect(Collectors.groupingBy(Widget::getTenantId));
//method logic here
}
@Override
@Nullable
public String getConfirmationMessage() {
return null;
}
@Override
public void setUp() throws SetupException {
// empty method
}
@Override
public void setFileOpener(ResourceAccessor resourceAccessor) {
// empty method
}
@Override
@Nullable
public ValidationErrors validate(Database database) {
return null;
}
}
Код: Выделить всё
┌─────┐
| liquibase defined in class path resource [...config/LiquibaseConfig.class]
↑ ↓
| widgetRepository defined in ...repository.WidgetRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration
↑ ↓
| (inner bean)#3ba50851
↑ ↓
| widgetRepositoryJdbcImplFragment
↑ ↓
| widgetRepositoryJdbcImpl defined in file [..repository\jdbc\impl\WidgetRepositoryJdbcImpl.class]
└─────┘
Я пытался решить проблему через ChatGpt, но не получилось.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -migration