Generador de super-pojos

El generador de super-pojos apareix com una necessitat de tener una lògica de negoci comú o gairebé comú a diferents versions de la mateixa interfície d'Open Api.

Descripció

El codi compartit, inclou:

  • El generador de super-pojos de línia d'ordres (en la versió de 20241101, només funciona amb java-8)
  • La llibreria que implementa una versió del mapejador per a traduir de super-pojos a pojos i viceversa.

Descripció del codi

  • El generador de super-pojos:
    • Fa ús de reflexió per a obtenir els atributs dels pojos
    • Hi ha diferents opcions de generació:
      • Escollir l'expressió regular per a identificar els getters i setters
      • Afegir toString
      • Afegir hashcode y equals
      • Afegir estil builder
      • Afegir addicionador d'elements per a les llistes
      • ...
    • Es fa ús de la llibreria jcodemodel per a generar el codi
  • La llibreria de mapeig:
    • Fa ús de reflexió per a identificar els atributs a traduir
    • Es fa úa d'una caché per a no haver de repetir la inspecció de reflexió cada vegada
    • Es pot afegir traductors manuals al mapejador
    • Es fa ús d'una traducció recursiva de cada paràmetre d'un pojo a un altre

La traducció per reflexió és lenta i, si hi ha moltes peticions, pot ser un coll d'ampolla.

A les proves que he fet (con una taxa de diversos centenars de peticions per segon), es veu que l'execució s'encalla durant els primers segons.

I desprès d'auqest temps, va rapidíssim.

És possible que això passi per:

  • Perquè al principi la caché està encara sense poblar.
  • Perquè tras aquest temps entra en joc l'optimitzador al vol de la JVM(JIT, just in time), que tradueix el codi més freqûent a un codi màquina molt optimitzat.

Si es vol que no hi hagi temps lents a l'inici, es pot pensar en precalentar l'execució abans d'escoltar als ports.

Pantalles

Generador de super-pojos (2024)

Descarregar

Versions

image

El generador de super pojos neix com a necessitat d'unificar diferents versions de models de pojos, per a tractar d'oferir una lògica comú a totes les versions

Pots veure més detalls de l'aplicació i de la llibreria associada al projecte superpojo-model de github

Descàrregues