Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como especificar em qual banco de dados o ItemWriter deve escrever?

Boa Noite ! Tenho a seguinte classe de ItemWriter :

@Slf4j
@Component
public class UpdateUserDataWriter implements ItemWriter<List<User>> {

    private final UserServiceImpl userService;

    public UpdateUserDataWriter(UserServiceImpl userService, DataSource dataSource) {
        this.userService = userService;
    }

    @Override
    public void write(List<? extends List<User>> list){
        List<User> user = list.get(0);
        for ( User user : users){
            try {
                userService.save(user);
                log.info("Saving User {}", user.getNome());
            }catch (Exception e){
                log.info("Can't save user {} beacuse {}",user.getNome(),e.getMessage());
            }
        }
    }

Gostaria de saber se tem alguma forma de indicar em qual banco de dados os itens deveriam ser escritos. O programa consegue ler e transformar os itens de forma correta, contudo não está salvando e utilizando Creat-Drop pude verificar que está usando o banco do spring batch( que está como Primary) para executar a atividade de escrita. Não queria utilizar o JdbItemWriter para não precisar refazer o processos e escrever a query do save/insert na mão.

1 resposta
solução!

Consegui resolver separando as configurações dos bancos de dados, adicionando as anotações @EnableTransactionManagement e @EnableJpaRepositories na classe de configuração e criando os métodos LocalContainerEntityManagerFactoryBean e PlatformTransactionManager. Assim consegui indicar da forma correta qual deveria ser o comportamento do uso dos bancos de dados :D