Я пытаюсь подключиться к Redis через Java, у меня следующая конфигурация,
@SpringBootApplication
@Configuration
@ComponentScan(basePackages = "com.infy.redisDemo")
public class RedisDemoApplication {
@Bean
public LettuceConnectionFactory getConnectionFactory(){
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory("localhost",6379);
return lettuceConnectionFactory;
}
@Bean
public RedisTemplate<String,Object> getRedisTemplate(){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(getConnectionFactory());
return redisTemplate;
}
public static void main(String[] args) {
SpringApplication.run(RedisDemoApplication.class, args);
}
}
Мои классы репо:
@Repository
public class UserRepoImpl implements UserRepository {
private RedisTemplate<String, Object> redisTemplate;
private HashOperations hashOperations;
public final String key = "USER";
public UserRepoImpl(RedisTemplate redisTemplate,
HashOperations hashOperations) {
this.redisTemplate = redisTemplate;
this.hashOperations = redisTemplate.opsForHash();
}
@Override
public void save(User user) {
hashOperations.put(key,user.getId(),user);
}
@Override
public void update(User user) {
hashOperations.put(key,user.getId(),user);
}
@Override
public Map findAll() {
return hashOperations.entries(key);
}
}
public interface UserRepository {
void save(User user);
void update(User user);
Map findAll();
}
Мой класс контроллера, как показано ниже,
@RestController
@RequestMapping("/rest/user")
public class RedisController {
private UserRepository userRepository;
public RedisController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping("/add/{id}/{name}")
public User add(@PathVariable String id,@PathVariable String name){
userRepository.save(new User(name,id,25000));
return userRepository.findById(id);
}
}
Когда я запускаю приложение, я получаю следующую ошибку,
org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания компонента с именем 'redisController', определенным в файле [redisDemo \ RedisController.class]: неудовлетворенная зависимость, выраженная через параметр конструктора 0; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'userRepoImpl', определенным в файле [redisDemo \ repository \ UserRepoImpl.class]: неудовлетворенная зависимость, выраженная через параметр конструктора 1; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'org.springframework.data.redis.core.HashOperations': ожидается, что по крайней мере 1 компонент будет квалифицирован как кандидат для автоматической передачи. Аннотации зависимостей: {}
что не так в программе? Любое предложение, чтобы заставить его работать? мне нужно использовать jedisconnectionFactory? Я использую Intellij, и моя версия для redis - 3.2 для Windows, а spring - 2.1.6 .