Estructura de paquete recomendada de un proyecto Spring Boot

1. Información general

Al crear un nuevo proyecto de Spring Boot, existe un alto grado de flexibilidad sobre cómo podemos organizar nuestras clases.

Aún así, hay algunas recomendaciones que debemos tener en cuenta.

2. Sin paquete predeterminado

Dado el hecho de que las anotaciones de Spring Boot como @ComponentScan , @EntityScan, @ConfigurationPropertiesScan y @SpringBootApplication usan paquetes para definir ubicaciones de escaneo, se recomienda que evitemos usar el paquete predeterminado, es decir, siempre debemos declarar el paquete en nuestras clases .

3. Clase principal

La anotación @SpringBootApplication activa el escaneo de componentes para el paquete actual y sus subpaquetes . Por lo tanto, una forma sólida de hacerlo es hacer que la clase principal del proyecto resida en el paquete base .

Esto es configurable y aún podemos ubicarlo en otro lugar especificando el paquete base manualmente. Sin embargo, en la mayoría de los casos, esta opción es ciertamente más sencilla.

Aún más, un proyecto basado en JPA necesitaría tener algunas anotaciones adicionales en la clase principal:

@SpringBootApplication(scanBasePackages = "example.baeldung.com") @EnableJpaRepositories("example.baeldung.com") @EntityScan("example.baeldung.com")

Además, tenga en cuenta que podría ser necesaria una configuración adicional.

4. Diseño

El diseño de la estructura del paquete es independiente de Spring Boot. Por lo tanto, debe ser impuesto por los requisitos de nuestro proyecto.

Una estrategia popular es paquete por función , que mejora la modularidad y permite la visibilidad privada del paquete dentro de los subpaquetes.

Tomemos, por ejemplo, el proyecto PetClinic. Este proyecto fue creado por los desarrolladores de Spring para ilustrar su punto de vista sobre cómo debería estructurarse un proyecto común de Spring Boot.

Está organizado paquete por función. Por lo tanto, tenemos el paquete principal, org.springframework.samples.petclinic , y 5 subpaquetes :

  • org.springframework.samples.petclinic. modelo
  • org.springframework.samples.petclinic. propietario
  • org.springframework.samples.petclinic. sistema
  • org.springframework.samples.petclinic. veterinario
  • org.springframework.samples.petclinic. visitar

Cada uno de ellos representa un dominio o una característica de la aplicación, agrupando clases altamente acopladas en su interior y permitiendo una alta cohesión .

5. Conclusión

En este pequeño artículo, echamos un vistazo a algunas recomendaciones que debemos tener en cuenta al crear un proyecto Spring Boot, y aprendimos cómo podemos diseñar la estructura del paquete.