Итак, я пытаюсь использовать простой сценарий, когда всякий раз, когда происходит откат Hystrix, в моем проекте шлюза шлюз будет пытаться получить данные из базы данных Redis.
По этой причине я импортировал
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
в pom моего микросервиса (скажем, GROUPS-MICROSERVICE) и аннотировал приложение Spring Boot с помощью @ EnableRedisRepositories . Затем я создал один репозиторий (скажем, GroupRedisRepository), который расширяет класс CrudRepository следующим образом
@Repository
public interface GroupRedisRepository extends CrudRepository<GroupDto,String> {
}
Макет GroupDto выглядит следующим образом
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@RedisHash("group")
public class GroupDto implements Serializable {
@Id
private String name;
**Couple of more variables**
}
Поскольку я планирую использовать репозиторий только для findAll () или findById () я подумал об использовании аннотации @ Cacheable для населения RedisCache, поэтому я импортировал соответствующую зависимость
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
с помощью кэширования через @ EnableCaching Аннотация и аннотированный мой метод обслуживания, такой как
@Cacheable(value = "group")
public GroupDto getByName(String name){
return groupComponent.getByName(name);
}
Краткое примечание: вызываемый выше groupComponent является просто репозиторием JPA и не имеет никакого отношения к Redis.
Проблема
Когда я вызываю мой метод уровня обслуживания (который аннотируется с помощью Cacheable), значения сохраняются, как и ожидалось, но когда я использую компонент GroupRedisRepository.findAll () ничего не показывает. Я попытался сохранить пользовательский объект напрямую через CrudRepository, и он работал как положено. Обе функции работают как положено, но не в обычном режиме.
Вопрос
Кажется, что Cacheable обрабатывает вещи по-своему, не принимая во внимание аннотацию RedisHa sh. Это означает, что когда что-то хранится в базе данных Redis через @Cacheable, оно отличается по формату от того, что хранится с помощью RedisRepository. Как кто-то может "syn c" эти 2 формата? Как заставить Cacheable использовать формат, определенный аннотацией @ RediHa sh?
Примечание : Все конфигурации обрабатываются классом AutoConfiguration и нашим application.yaml.
Заранее спасибо