Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
Spring Service o Util para una clase de generador en Java?

Tengo métodos generadores de códigos de barras a los que llamo desde Controller en mi proyecto Java (Spring Boot). La clase de generador es como se muestra a continuación:

 @Component @NoArgsConstructor public class QRCodeGenerator { private static final int LABEL_X_POS = 45; private static final int LABEL_Y_POS = 20; @Value("${qr-code.margin}") private int margin; @Value("${qr-code.fontSize}") private int fontSize; public ResponseEntity<Resource> getQRCode(String data) throws IOException { // code omitted for brevity addLabel(image, label); final ByteArrayResource resource = new ByteArrayResource(toByteArray(image)); return ResponseEntity.ok().body(resource); } private static byte[] toByteArray(BufferedImage image) throws IOException { // code omitted for brevity } private void addLabel(BufferedImage source, String text) { int x = LABEL_X_POS; int y = LABEL_Y_POS; // code omitted for brevity } }

Primero comencé a usar esta clase como estática, pero luego eliminé la estática para leer los datos en application.yml correctamente.

Aquí hay algunos puntos que necesito que me aclaren:

1. Soy nuevo en Spring y, por lo que veo, los servicios de Spring generalmente se usan para proporcionar datos de la base de datos o cualquier otro servicio, puntos finales, etc. ¿Es eso cierto?

2. ¿Debo crear un servicio para la clase anterior (no necesito acceder a la base de datos en esa clase)? ¿O es mejor el enfoque (crear como un componente y luego inyectarlo en mi controlador)?

3. Hay muchas opiniones diferentes con respecto a las clases Util estáticas. Entonces, ¿qué hay de convertir esta clase en una clase Util estática? ¿Es mejor que ahora o usarlo como un servicio de primavera?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Conviértalo en un servicio de primavera y podrá sustituirlo fácilmente por un simulacro cuando escriba una prueba para el controlador. De lo contrario, no podrá burlarse de él (a menos que use cosas como Powernock). Dado que ya está inyectando valores en él, es mucho más fácil mantenerlo como un componente de Spring.

En general, es una optimización prematura usar clases útiles estáticas y puede interferir con las pruebas. Usaría clases de utilidad estáticas solo si contienen solo métodos estáticos que no tienen efectos secundarios, que no necesitan acceso a los datos de configuración y que no me importa no poder simular. Los métodos que uso en el código de validación de entrada serían un ejemplo de algo para lo que podría usar métodos estáticos. Pero tiene la mayor flexibilidad, por ejemplo, para poder inyectar configuraciones, si las mantiene como componentes Spring.

over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay algunas opiniones sobre sus preguntas:

  1. Las clases anotadas con @Service se utilizan en la capa de lógica empresarial, puede proporcionar datos pero también puede realizar acciones como en su caso.
  2. Según el punto 1, puede convertirlo en un servicio porque proporciona lógica para crear códigos qr para la capa de representación (Controladores).
  3. Tener este tipo de clases como @Component o @Service más específico hace que sea más fácil inyectar dependencias usando Dependency Injection y también es más fácil inyectar su clase como dependencia a otros beans, por lo que también es más fácil probar/simular. Mantenerlo como Spring Service es un mejor enfoque.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda