1
resposta

mvcConversion

Alguém poderia me explicar por favor o que acontece nos "bastidores" deste método que criamos na aula?

@Bean
    public FormattingConversionService mvcConversionService() {
        DefaultFormattingConversionService cs = new DefaultFormattingConversionService();
        DateFormatterRegistrar dfr = new DateFormatterRegistrar();
        dfr.setFormatter(new DateFormatter("dd/MM/yyyy"));
        dfr.registerFormatters(cs);

        return cs;
    }

Seguindo linha por linha este método, eu crio um Serviço de Conversão (DefaultFormattingConversionService cs = new DefaultFormattingConversionService();), crio um Registrar de Formatação de data, passando como parâmetro um objeto do tipo DateFormatter (dfr.setFormatter(new DateFormatter("dd/MM/yyyy"))), invoco o método registerFormatters da classe de "Registrar" passando como parâmetro o Serviço de conversão (dfr.registerFormatters(cs);), e ao retornar, retorno este mesmo serviço de conversão, que não teve nenhuma ação desde que foi instanciado no começo do método.

Apesar de isso ter funcionado como o esperado (formatou a data e salvou a data no banco no formato YYYY-mm-dd HH:ii:ss), não fez sentido para mim.

Alguém pode me explicar o que aconteceu aqui por favor?

1 resposta

Fala ai Guilherme, de boa ?

Legal sua preocupação em saber o que tá rolando por trás dos panos, esse é o código que rola :


      @Override
57     public void registerFormatters(FormatterRegistry registry) {
58         addDateConverters(registry);
59         registry.addFormatterForFieldAnnotation(new DateTimeFormatAnnotationFormatterFactory());
60 
61         // In order to retain back compatibility we only register Date/Calendar
62         // types when a user defined formatter is specified (see SPR-10105)
63         if (this.dateFormatter != null) {
64             registry.addFormatter(this.dateFormatter);
65             registry.addFormatterForFieldType(Calendar.class, this.dateFormatter);
66         }
67     }

Por trás dos panos ele recebe o DefaultFormattingConversionService para poder usar o setter dele para cadastrar todas as configurações que foram feitas.