1
resposta

essa resposta da questão não esta formulada de forma errada?

na aula em nenhum momento eu vi a instrutora passar (dentro bean Reader) no método delimited() um argumento string especificando o delimitador e supondo que tenha esquecido de passar, mesmo eu colocando a string ** ";"** para especificar o delimitador, o método delimited() não aceita, pq ele não espera receber argumentos.

Me pareceu que a **"B" ** é a opção correta. Devido a diferença nos tipos

1 resposta

Olá Ronaldo! Tudo bem?

No contexto do Spring Batch, quando usamos o FlatFileItemReaderBuilder para ler arquivos CSV, o método delimited() é utilizado para indicar que o arquivo possui um delimitador, como uma vírgula ou ponto e vírgula.

Porém, o método delimited() por si só não aceita argumentos diretamente. Para especificar o delimitador, você deve utilizar o método delimiter(String delimiter) após delimited().

Por exemplo, se o seu arquivo CSV utiliza ponto e vírgula como delimitador, você pode configurar o leitor da seguinte forma:

@Bean
public ItemReader<Pedido> reader() {
    return new FlatFileItemReaderBuilder<Pedido>()
            .name("leitura-pedidos")
            .resource(new FileSystemResource("pedidos/pedidos.csv"))
            .delimited()
            .delimiter(";") // Aqui você especifica o delimitador
            .names("id", "cliente", "valorTotal")
            .targetType(Pedido.class)
            .build();
}

Portanto, a alternativa que menciona a falta de especificação do delimitador está correta. A opção "E" seria a resposta apropriada para o bug mencionado.

Espero ter esclarecido esse ponto e bons estudos!