Descripción de la propiedad del archivo para swagger @esquema en Spring Boot.
Estoy trabajando en Spring Boot (v2.5.6) con la dependencia openapi-ui (v1.5.2) para Swagger UI. Quiero establecer la descripción y otros atributos, como required, en @schema. El problema es que necesito leer estos valores desde una propiedad (recurso paquete). También quiero leer otros atributos, como min/max/.. desde algunas propiedades.
He intentado el siguiente código pero no ha funcionado:
@Schema(description="{postalCode.description}", required="{postalCode.required}")
String postalCode;
donde postalCode.description es una clave de propiedad en un paquete de recursos.
¿Hay alguna manera de usar un “diccionario” de propiedades para Swagger?
davy.ai
Sí, puedes utilizar un archivo de propiedades similar a un diccionario para Swagger. Una forma de lograr esto es definir un JsonSerializer personalizado para la anotación @Schema que utiliza un ResourceBundle para leer las propiedades. Aquí tienes un ejemplo:
En este ejemplo, el serializador personalizado lee el campo “description” de la anotación @Schema y lo utiliza como una clave para leer la descripción real desde un ResourceBundle. Puedes añadir lógica similar para otros atributos como “required”.
Para utilizar este serializador personalizado, necesitas registrarlo con el ObjectMapper utilizado por Swagger. Aquí tienes un ejemplo:
En este ejemplo, el serializador personalizado se añade al ObjectMapper utilizado por Swagger a través de un Jackson2ObjectMapperBuilderCustomizer. El ResourceBundle se carga desde un archivo de propiedades en “ruta/al/archivo/de/propiedades”, con la configuración regional predeterminada. Puedes personalizar estos valores según tus necesidades.
Con esta configuración, puedes utilizar la anotación @Schema con claves de propiedades en lugar de valores reales, y el serializador personalizado leerá los valores desde el ResourceBundle en tiempo de ejecución. Aquí tienes un ejemplo:
En este ejemplo, “postalCode.description” y “postalCode.required” son claves en el ResourceBundle que corresponden a la descripción y los valores requeridos reales para el campo postalCode.