2013-05-15 131 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