配置redisson时报空指针异常

导读:本篇文章讲解 配置redisson时报空指针异常,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

查看报错信息,最后一个caused by:
在这里插入图片描述
代码:

@Configuration
public class RedissonConfig {

    @Autowired
    private ProvinceService provinceService;

    @Bean
    public RBloomFilter initBloomFilter() {
        Config config = new Config();

        //分布式集群
        //        config.useClusterServers()
        //            .setScanInterval(2000)
        //            .addNodeAddress("redis://10.0.29.30:6379", "redis://10.0.29.95:6379")
        //            .addNodeAddress("redis://10.0.29.205:6379");
        //哨兵
        //config.useSentinelServers().addSentinelAddress("redis://10.0.29.30:27789");

        //单机
//        config.useSingleServer().setAddress("redis://192.168.54.61:6379");
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
        //              .setPassword().setDatabase()

        RedissonClient redisson = Redisson.create(config);

        //初始化布隆顾虑器
        RBloomFilter<Object> bloomFilter = redisson.getBloomFilter("bloomFilter:province");
        bloomFilter.tryInit(100000000L,0.001);

        // 将数据库中所有省份id放入bloomFilter中
        List<Integer> provinceIdsAll = provinceService.queryProvinceIdsAll();
        provinceIdsAll.forEach(e -> bloomFilter.add(e));

        return bloomFilter;
    }

造成空指针异常的代码
List<Integer> provinceIdsAll = provinceService.queryProvinceIdsAll();

打个断点进入调试模式
在这里插入图片描述
可以看到service组件通过@AutoWired注入时为空。

由此可知,@Configuration需要自动注入时@Service的组件时,service层组件还没有被加载到IOC容器中,@Configuration注解加载优先级会高于@Service注解。

此时不能再自动注入,只能手动注入了
在这里插入图片描述
运行成功
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99714.html

(3)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!