parâmetros de interface anotação personalizados para verificar otimizar

  Quando o desenvolvimento real, muitos dos parâmetros de interface de serviços como complexo como um multi-estágio irá ser misturado com vários JSON ou matriz aninhada.

  Montadas lógica neste momento, se vamos escrever os parâmetros da interface desordenado na camada Controller, a legibilidade do código será muito pobre, que precisa de um follow-up para assumir a lógica de montagem documento interface de front do que deduzir os parâmetros de um parâmetro do parâmetro.

  Neste caso, a chamada interface de parâmetros DTO objetos de transmissão de dados encapsular, com as anotações personalizadas podem melhorar muito a legibilidade.

  Nós personalizamos um comentário para identificar os parâmetros do nosso dto:

@Retention (RetentionPolicy.RUNTIME) 
@Target (valor = ElementType.FIELD)
 público @ interface de ParamAnnotation {
     // se os parâmetros necessários 
    pública  booleana IsRequired () padrão  para false ; 

    // nome do parâmetro 
    pública de nomes String (); 
}

  Notas contém duas propriedades, o nome do parâmetro e parâmetro, se necessário.

  Desta forma, o nosso código é composto por:

 

   Altera a:

 

  Melhorou significativamente a legibilidade, enquanto nós podemos grupo lógica atribuição relacionada é encapsulado em dto do construtor.

  Antes de cada interface de invocação, se podemos concluir pela reflexão em Traverse Checking dto deve passar parâmetros:

 / ** 
     * @author NXY 
     * @date 2020/03/24 19:49 
     * @param obj: a necessidade de verificar o objeto parâmetro 
     * @ return 
     * @exception 
     * @description determinar se os parâmetros são necessários para preencher 
     * / 
    público  booleano isComplete (t obj) lança IllegalAccessException, um NoSuchFieldException { 
        classe objclass = obj.getClass (); 
        O campo, os campos [] = objClass.getDeclaredFields ();
         para (campo, campo: Campos) {
             SE (. field.isAnnotationPresent (ParamAnnotation classe )) { 
                field.setAccessible ( como true );
                ParamAnnotation ParamAnnotation = field.getAnnotation (ParamAnnotation. Classe );
                 // se necessário 
                SE (paramAnnotation.isRequired ()) { 
                    Object value = Field.get (obj);
                     IF ( nulo == valor) { 
                        objecto ParaName = paramAnnotation .name ();
                         // itens em falta write-back 
                        campo, exclusão = objClass.getDeclaredField ( "eliminação" ); 
                        deletion.setAccessible ( como true );
                        deletion.set (obj, paraName); 
                        retornar  falsa ; 
                    } 
                } 
            } 
        } 
        Retornar  verdadeiro ; 
    }

  Para que a nossa lógica camada exterior pelas dezenas de linhas de código se torna:

 

   Vo DTO obtido pelo parâmetro, o parâmetro de verificação de integridade. Vamos controlador lógico apenas para chamar a atenção para a conversão aos poucos descanso e verificar modular.

  Enquanto refletindo uma menor eficiência operacional, mas não particularmente alta nas exigências da cena de desempenho, com esses custos em troca da legibilidade do código vale a pena.

Acho que você gosta

Origin www.cnblogs.com/niuyourou/p/12561939.html
Recomendado
Clasificación