Carga de una lista de manejadores, ya sea para usar el archivo de propiedades o la reflexión

En los proyectos en los que mi equipo está trabajando actualmente, tenemos decenas de controladores para un evento específico que implementan una interfaz común, y se invocan cuando ocurren los eventos que escuchan.

Y aquí está el problema: ¿deberíamos usar un archivo de propiedades para configurar qué controladores tenemos actualmente o usar la reflexión para enumerar todas las clases que implementan la interfaz común?

Pros para usar un archivo de propiedades:

  • Más flexible, más fácil deshabilitar un controlador específico.
  • Podría tener una configuración diferente en diferentes entornos.

Pros para usar reflexiones:

  • Más fácil de implementar, no es necesario mantener el archivo de propiedades para agregar / quitar clases.
  • Más a prueba de errores ya que no necesitamos procesar el texto plano en el archivo de propiedades y cargarlos usando cargadores de clases.

Actualmente estoy dudando entre los dos. ¿Existe una "buena práctica" comúnmente percibida?

Respuesta 1

De las dos opciones, votaría por usar un archivo de propiedades. Puede implicar mantener algunos archivos más, pero siempre es mejor tener una configuración explícita en lugar de una configuración implícita. También hará que sea mucho más fácil para las personas nuevas en su base de códigos entender lo que está sucediendo.

También recomendaría que use la inyección de dependencia (Spring o Guice). Spring DI cumple con sus requisitos. Puede configurar explícitamente qué controladores se utilizan y puede tener fácilmente diferentes archivos para producción, UAT, etc. Tenemos un patrón similar y Spring ha funcionado muy bien.

Respuesta: 2

Estoy tratando de verificar si hay un archivo en WEB-INF / ver archivo. Actualmente estoy usando Spring y JSP 2.0, y estoy tratando de crear un tema para el foro. En una etiqueta personalizada, estoy tratando de verificar si el archivo jsp existe dentro ...

Estoy trabajando en una API de arranque Java Spring donde necesito insertar datos masivos en mi base de datos. Sé cómo podría lograr esto. Para obtener una inserción masiva con Sring Boot y Spring Data JPA solo necesita dos ...

Estoy tratando de extraer el tiempo de las siguientes cadenas usando regex Concierto gratis a las 8 pm allá Concierto gratis a las 8 pm allá Concierto gratis a las 8:30 pm allá Concierto gratis a las 8:30 pm durante ...

Soy nuevo en Java e intento analizar un archivo XML con objetos que también tienen parámetros ENUM. Uno de los ENUM también tiene un valor. Y al analizar recibo un mensaje de error (java.lang ...