在 spring boot with redis cache 我可以在什么位置使用@Cacheable

At what positions I can use @Cacheable in spring boot with redis cache

我可以在什么位置使用@Cacheable spring boot with redis cache, 我可以用任何方法使用它吗?

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 returns DTO 显然不是一个实体,所以为了摆脱它,我创建了两个 returns 域的方法,但是 问题是它没有保存或使用 redis 缓存任何人都可以向我提出问题或任何解决方案吗?

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