Método GET de Spring Boot con eliminación suave: cómo agregar otra excepción en la implementación del servicio.
Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código ni la salida en markdown.
“Soy principiante en Java y Spring Boot, e implementé una clase de Usuario con características CRUD. Sin embargo, ahora necesito agregar la función de que si exclusionFlag es True, el usuario no se puede mostrar ni modificar, por lo que necesito agregar la prueba si la bandera es verdadera antes de estas acciones CRUD.
El código en el momento
UserServiceImpl.java
@Override
public UserResponse getAllUsers(int pageNo, int pageSize, String sortBy, String sortDir) {
<pre><code> Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortBy).ascending()
: Sort.by(sortBy).descending();
Pageable pageable = PageRequest.of(pageNo, pageSize, sort);
Page<User> users = userRepository.findAll(pageable);
List<User> listOfUsers = users.getContent();
List<UserDto> content= listOfUsers.stream().map(user -> mapToDTO(user)).collect(Collectors.toList());
UserResponse userResponse = new UserResponse();
userResponse.setContent(content);
userResponse.setPageNo(users.getNumber());
userResponse.setPageSize(users.getSize());
userResponse.setTotalElements(users.getTotalElements());
userResponse.setTotalPages(users.getTotalPages());
userResponse.setLast(users.isLast());
return userResponse;
}
</code></pre>
@Override
public UserDto getUserById(long id) {
User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado"));
// Cualquier otra adición como:
// Usuario user = userRepository.filterByExclusionFlag(true).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado"));
// resulta en errores como que la función no puede lanzar una excepción y agregué el filterByExclusionFlag en UserRepository. No tengo idea de cómo agregar esta función en UserService
return mapToDTO(user);
}
davy.ai
Para agregar la funcionalidad de verificar la bandera de exclusión antes de permitir acciones CRUD para un Usuario, puedes modificar los métodos
getUserById
ygetAllUsers
enUserServiceImpl
de la siguiente manera:Aquí, utilizamos dos nuevos métodos
findAllByExclusionFlagFalse
efindByIdAndExclusionFlagFalse
que solamente obtienen usuarios con exclusionFlag = false. Estos métodos se añaden aUserRepository
.Con estas modificaciones, los métodos
getAllUsers
ygetUserById
solo devolverán usuarios con exclusionFlag = false, por lo que no necesitas verificar explícitamente la bandera en la capa de servicio.</user,>