Java 正在SpringBoot中检查Redis@配置

Java 正在SpringBoot中检查Redis@配置,java,spring,spring-boot,redis,Java,Spring,Spring Boot,Redis,运行spring boot应用程序时,是否有方法检查是否加载了@Configuration组件? 我在使用此应用程序时遇到一些“空指针”问题: 主类 @ComponentScan(basePackages = "com.pack") @EnableAutoConfiguration public class App { public static void main(String[] args) { SpringApplication.run(App.class, ar

运行spring boot应用程序时,是否有方法检查是否加载了@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;
    }
}
package com.pack.config;
@配置
公共类数据库配置{
@豆子
JedisConnectionFactory JedisConnectionFactory(){
返回新的JedisConnectionFactory();
}
@豆子
公共StringRedisSerializer StringRedisSerializer(){
StringRedisSerializer StringRedisSerializer=新的StringRedisSerializer();
返回字符串重新序列化器;
}
@Bean(name=“redisTemplate”)
公共RedisTemplate RedisTemplate(){
RedisTemplate RedisTemplate=新RedisTemplate();
redisTemplate.setConnectionFactory(jedisConnFactory());
setKeySerializer(stringRedisSerializer());
返回模板;
}
}
当我尝试使用RedisTemplate时:

public class ServiceDummy  {

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

}
公共类ServiceDummy{
@自动连线
再发现模板再发现模板;
公共void保存(字符串数据){
redisTemplate.opsfervalue().set(“1234”,数据);
}
}

我得到了一个空指针。

正如@Todd正确指出的,您不能期望Spring管理未注册到Spring上下文的bean

因此,您需要:

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

  • 正如@Todd正确指出的,您不能期望Spring管理未注册到Spring上下文的bean

    因此,您需要:

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

  • 您的
    ServiceDummy
    类是否用
    @组件标记?也许自动连线没有把它接起来。你的
    ServiceDummy
    类是否用
    @组件标记了?也许自动布线并没有起作用。