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.

  1. 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
}

  1. 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);
    }
}

  1. 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

  1. 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ó
}

  1. 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);
}

  1. 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

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

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ó

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats