springBoot整合redis出现Consider defining a bean of type com.abc.abcService in your configuration

编程知识 更新时间:2023-05-02 05:29:44

这里写自定义目录标题

  • springBoot整合redis,出现Consider defining a bean of type 'com.***.***.service.***' in your configuration.
    • RedisConnectFactory注入不了报红
        • 可能会导致的问题!?
        • 为什么会出现这样的问题?!

springBoot整合redis,出现Consider defining a bean of type ‘com.***.***.service.***’ in your configuration.

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”)


启动类上,加上扫描!

最后成功重启!
不知道理解对不对,希望能对看到这篇文章的人给个启发,减少错误!

更多推荐

springBoot整合redis出现Consider defining a bean of type com.abc.abcService in your c

本文发布于:2023-04-26 06:37:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/8f7d05eec3a4b8a2b9705c7c4f34d34d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:defining   bean   springBoot   redis   abcService

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 104523文章数
  • 26215阅读数
  • 0评论数