2013-05-15 174 views
4

@Autowired我有自定義轉換器:春自定義轉換器

@Component 
public class RoleConverter implements Converter<String, Role> { 

    @Autowired private Roles roles; 

    @Override 
    public Role convert(String id) { 
     return roles.findById(Long.parseLong(id)); 
    } 
} 

但@Autowired被設置爲空值。導致Nullpointerexception

這是角色類:

@Repository 
@Transactional 
public class Roles extends Domain<Role>{ 

    public Roles() { 
     super(Role.class); 
    } 

} 

我使用Java的配置。轉換器已註冊:

@Configuration 
@EnableWebMvc 
//other annotations... 
public class WebappConfig extends WebMvcConfigurerAdapter { 
//.... 


    @Override 
    public void addFormatters(FormatterRegistry registry) { 
     registry.addConverter(new RoleConverter()); 
     super.addFormatters(registry); 
    } 


/.... 

} 

當我@Autowired角色在控制器的作品。

爲什麼@Autowired在Converter中設置爲null?

回答

4

因爲在這裏你正在創建一個新對象RoleConverter。相反,你應該autowire RoleConverter

registry.addConverter(new RoleConverter()); 
+0

謝謝!你是對的。我沒有注意到這一點。解決了。 – user1712326