0

我可以在带有redis缓存的spring boot中使用@Cacheable的哪些位置,我可以用任何方法使用它吗?

public UserDTO findByUserID(Long userID) {

    User user = findUser(userID);
    if (user != null) {
        Password password = findPassword(userID);
        return userMapper.mapToDTO(user, password);
    }
    return null;

}

private Password findPassword(Long userID) {
    Password password = passwordRepository.findPasswordBasedOnUserID(userID);
    return password;
}

@Cacheable("users")
private User findUser(Long userID) {
    User user = userRepository.findByUserID(userID);
    return user;
}

我已经将它与方法 findUser 一起使用,因为 findByUserID 返回的 DTO 显然不是一个实体,所以为了摆脱它,我创建了两个返回域的方法,但问题是它没有保存或使用 redis 缓存任何人都可以建议我问题或任何解决方案?

4

1 回答 1

1

不,您不能在同一服务的私有方法上使用它,因为 Spring 不处理对同一类的私有方法的调用。您应该将 findUser 或 findByUserId 移动到其他服务。

于 2020-11-09T21:33:57.023 回答