Integração Spring: Livre-se da duplicação de código para configurar beans

Para o meu projeto de cliente SFTP, estou usando a integração de primavera. Temos clientes diferentes e precisamos nos conectar a diferentes servidores SFTP, mas toda a lógica é a mesma, então eu os abstraí para AbstractSFTPEndPoint. Cada classe específica do cliente implementa getClientId (), que é usado pelo AbstractSFTPEndPoint para obter detalhes específicos do cliente, como credenciais de SFTP.

No entanto, toda a lógica é a mesma para todos os clientes, mas ainda estou tendo que implementar classes específicas para cada cliente. Isso ocorre principalmente porque precisamos de "MessageSource" separado para cada cliente.

Como posso me livrar dessa duplicação?

public class SFTPEndPointForClientAAAA extends AbstractSFTPEndPoint {

    public String getClientId(){
       return "clientAAAA";
    }

    @Bean(name = "channelForClientAAAA")
    public QueueChannel inputFileChannel() {
        return super.inputFileChannel();
    }

    @ServiceActivator(inputChannel = "channelForClientAAAA", poller = @Poller(fixedDelay = "500"))
    public void serviceActivator(Message message) {
        super.serviceActivator(message);
    }

    @Bean(name = "messageSourceForClientAAAA")
    @InboundChannelAdapter(value = "channelForClientAAAA",
            poller = @Poller(fixedDelay = "50", maxMessagesPerPoll = "2"))
    public MessageSource messageSource() {
        return super.messageSource();
    }
}

B, asically eu tenho um monte de hosts SFTP para conectar e aplicar a mesma lógica. Quero que isso seja feito automaticamente sem a necessidade de implementar a classe para cada host SFTP.

questionAnswers(1)

yourAnswerToTheQuestion