En aquest tema, explorarem alguns dels errors més comuns que es cometen en el desenvolupament amb Spring Boot i com podem evitar-los. Identificar i corregir aquests errors pot millorar significativament la qualitat del teu codi i l'eficiència del teu desenvolupament.
- No utilitzar les anotacions correctes
Error
Un dels errors més comuns és no utilitzar les anotacions correctes o no entendre el seu propòsit. Per exemple, confondre @Component
, @Service
, i @Repository
.
Solució
- @Component: S'utilitza per marcar una classe com a component genèric de Spring.
- @Service: S'utilitza per marcar una classe com a servei de negoci.
- @Repository: S'utilitza per marcar una classe com a component de persistència de dades.
@Component public class MyComponent { // Codi del component } @Service public class MyService { // Codi del servei } @Repository public class MyRepository { // Codi del repositori }
- No gestionar correctament les excepcions
Error
No gestionar les excepcions de manera adequada pot portar a aplicacions poc robustes i difícils de mantenir.
Solució
Utilitza @ControllerAdvice
i @ExceptionHandler
per gestionar les excepcions de manera centralitzada.
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity<String> handleResourceNotFoundException(ResourceNotFoundException ex) { return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND); } @ExceptionHandler(Exception.class) public ResponseEntity<String> handleGeneralException(Exception ex) { return new ResponseEntity<>(ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } }
- No configurar correctament les propietats
Error
No configurar correctament les propietats de l'aplicació pot portar a problemes de rendiment i seguretat.
Solució
Utilitza el fitxer application.properties
o application.yml
per configurar les propietats de l'aplicació de manera adequada.
# application.properties server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret
# application.yml server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: secret
- No utilitzar perfils de Spring Boot
Error
No utilitzar perfils de Spring Boot per gestionar diferents configuracions per a diferents entorns (dev, test, prod).
Solució
Defineix perfils en els fitxers de configuració i utilitza l'anotació @Profile
per carregar els beans específics per a cada perfil.
# application-dev.properties spring.datasource.url=jdbc:mysql://localhost:3306/devdb # application-prod.properties spring.datasource.url=jdbc:mysql://localhost:3306/proddb
@Configuration @Profile("dev") public class DevConfig { // Configuració específica per a l'entorn de desenvolupament } @Configuration @Profile("prod") public class ProdConfig { // Configuració específica per a l'entorn de producció }
- No optimitzar les consultes a la base de dades
Error
No optimitzar les consultes a la base de dades pot portar a problemes de rendiment.
Solució
Utilitza les anotacions de JPA com @Query
per escriure consultes personalitzades i optimitzades.
public interface UserRepository extends JpaRepository<User, Long> { @Query("SELECT u FROM User u WHERE u.email = :email") User findByEmail(@Param("email") String email); }
- No realitzar proves adequades
Error
No realitzar proves unitàries i d'integració adequades pot portar a aplicacions amb errors i poc fiables.
Solució
Utilitza JUnit i Mockito per escriure proves unitàries i d'integració.
@RunWith(SpringRunner.class) @SpringBootTest public class UserServiceTest { @Autowired private UserService userService; @MockBean private UserRepository userRepository; @Test public void testFindUserByEmail() { User user = new User("[email protected]"); Mockito.when(userRepository.findByEmail("[email protected]")).thenReturn(user); User found = userService.findByEmail("[email protected]"); assertEquals("[email protected]", found.getEmail()); } }
Conclusió
Evitar aquests errors comuns pot millorar significativament la qualitat del teu codi i la robustesa de les teves aplicacions Spring Boot. Recorda sempre seguir les millors pràctiques i realitzar proves adequades per assegurar-te que la teva aplicació funcioni correctament en tots els entorns.
Curs de Spring Boot
Mòdul 1: Introducció a Spring Boot
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
Mòdul 6: Proves a Spring Boot
Mòdul 7: Funcions avançades de Spring Boot
Mòdul 8: Desplegant aplicacions Spring Boot
Mòdul 9: Rendiment i monitorització
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs