在SpringBoot中检查Redis @Configuration

时间:2017-03-09 22:58:56

标签: java spring spring-boot redis

有没有办法在运行spring boot app时检查是否正在加载@Configuration组件? 当我使用这个应用程序时,我有一些'空指针'问题:

主要课程

@ComponentScan(basePackages = "com.pack")
@EnableAutoConfiguration
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

配置类

package com.pack.config;
@Configuration
public class DataBaseConfig {

    @Bean
    JedisConnectionFactory jedisConnFactory() {    
        return new JedisConnectionFactory();
    }

    @Bean
    public StringRedisSerializer stringRedisSerializer() {
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        return stringRedisSerializer;
    }

    @Bean(name = "redisTemplate")
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(jedisConnFactory());
        redisTemplate.setKeySerializer(stringRedisSerializer());
        return redisTemplate;
    }
}

当我尝试使用RedisTemplate时:

public class ServiceDummy  {

    @Autowired
    RedisTemplate<String, Object> redisTemplate;
    public void save(String data){
        redisTemplate.opsForValue().set("1234", data);
    }

}

我得到一个nullPointer。

1 个答案:

答案 0 :(得分:0)

正如@Todd正确指出的那样,你不能指望Spring管理那些没有注册到Spring上下文的bean。

所以你需要:

  1. 使用@Component注释将该bean标记为Spring bean,或者在这种情况下@Service注释会更好。
  2. 确保ServiceDummy位于com.pack包下,以便Spring可以扫描该组件。