2017-03-09 14 views
0

Springブートアプリケーションの実行時に@Configurationコンポーネントがロードされているかどうかを確認する方法はありますか? 私はこのアプリを使用する場合、私はいくつかの 'NULLポインタ' 問題を抱えている:SpringBootのRedis @Configurationの確認

メインクラスに

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

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

Configurationクラス

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を取得しています。

+0

あなたの 'ServiceDummy'クラスは' @ Component'とマークされていますか?おそらくオートワイヤリングはそれを拾っていないでしょう。 – Todd

答えて

0

@Toddが正しく指摘したように、SpringがSpringコンテキストに登録されていないBeanを管理することは期待できません。

だからあなたが行う必要があります。

  1. マークを@Component注釈付きのSpring Beanと豆、またはこのような場合には@Service注釈が良いだろうということ。
  2. ServiceDummycom.packパッケージに含まれていることを確認してください。そうすれば、Springはそのコンポーネントをスキャンできます。
関連する問題