2017-03-09 62 views
0

有沒有辦法檢查在運行Spring啓動應用程序時是否加載了@Configuration組件? 我有一些 '空指針' 的問題時,我使用這個程序:在SpringBoot中檢查Redis @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。

+0

您的'ServiceDummy'類是否標有'@ Component'?也許自動裝配不會選擇它。 – Todd

回答

0

正如@Todd正確指出的,你不能指望Spring管理未註冊到Spring上下文的bean。

所以,你需要:

  1. 馬克這個bean爲Spring Bean與@Component註釋,或在這種情況下@Service註釋會更好。
  2. 確保ServiceDummy包含在com.pack包中,以便Spring可以掃描該組件。