我永远喜欢惠惠 2021-02-17 20:48 采纳率: 66.7%
浏览 667
已采纳

JAVA连接Redis报空指针

/**
*RedisConfig.java
**/

@Configuration  //配置类
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setConnectionFactory(factory);
        //key序列化方式
        template.setKeySerializer(redisSerializer);
        //value序列化
        template.setValueSerializer(jackson2JsonRedisSerializer);
        //value hashmap序列化
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        return template;
    }
/**
*RedisConnect.java
**/

public class RedisTest {

    //这一行报错:Exception in thread "main" java.lang.NullPointerException
    @Autowired
     private RedisTemplate<String,Object> template;

    public void test(){
        User user = new User();
        user.setName("你好");
        user.setNo(123456);
        template.opsForValue().set("redis", user);
        User redis = (User) template.opsForValue().get("redis");
        System.out.println(redis);

    }
}
/**
*Application.java
**/
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
        RedisTest redisTest = new RedisTest();
        redisTest.test();    //这里报错:Exception in thread "main" java.lang.NullPointerException
    }
}
<!-- maven中与之关联的包 -->

        <dependency>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
            <version>6.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.9.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
报错信息

Exception in thread "main" java.lang.NullPointerException
	at security.test.RedisTest.test(RedisConnect.java:20)
	at security.Application.main(Application.java:15)

尝试过各种相关的方法,折腾了一下午,实在顶不住了。

  • 写回答

3条回答 默认 最新

  • 可乐可乐可 2021-02-18 10:02
    关注

    推荐了解一下Spring的基础(IoC相关的)

    使用new的方式并不能自动注入,Spring无法管理使用new构建的对象

    所以正确的方法是使用Spring依赖注入你的测试对象

    @SpringBootApplication
    public class Application {
    @Autowired
    RedisTest re;
        public static void main(String[] args) {
            SpringApplication.run(Application.class);
           
            re.test();  
        }
    }

    问题解决后记得标记已解决

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因