
springBoot整合redis出现Consider defining a bean of type com.abc.abcService in your configuration
这里写自定义目录标题
- springBoot整合redis,出现Consider defining a bean of type 'com.***.***.service.***' in your configuration.
- RedisConnectFactory注入不了报红
- 可能会导致的问题!?
- 为什么会出现这样的问题?!
redis 下载安装略 redis界面管理工具下载安装略
下面主要说一下遇到的问题
RedisConnectFactory注入不了报红 public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisSerializer<Object> serializer = redisSerializer(); RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(serializer); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(serializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } @Bean public RedisSerializer<Object> redisSerializer() { //创建JSON序列化器 Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); serializer.setObjectMapper(objectMapper); return serializer; } @Bean public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory); //设置Redis缓存有效期为1天 RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer())).entryTtl(Duration.ofDays(1)); return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration); } }因为Spring找不到redisConnectFactory的bean导致出现问题!引起工具类的redisTemaplate注入不了!
@Service public class RedisServiceImpl implements RedisService { @Autowired private RedisTemplate<String, Object> redisTemplate; @Override public void set(String key, Object value, long time) { redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } } 可能会导致的问题!?如果当别的地方要使用到redisService的时候,启动项目会报错!因为spring - ioc创建bean的时候是通过注解@Autowied注解,通过动态代理创建对象的!但是由于上面说了,不能找到redisConnectFactory所以注入失败!
为什么会出现这样的问题?!这个项目是springBoot创建的,并且redis的整合在另一个工程里面, springBoot 的自动装配 扫描的spring启动类同级的包及其子包,但是由于不是统一个项目导致扫描不到bean! 解决: @SpringBootApplication(scanBasePackages = “com.mall”) //@ComponentScan(“com.mall”)
启动类上,加上扫描!
最后成功重启! 不知道理解对不对,希望能对看到这篇文章的人给个启发,减少错误!
👁️ 阅读量:0
© 版权声明:本文《springBoot整合redis出现Consider defining a bean of type com.abc.abcService in your configuration》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1686554823a290614.html。