当前位置: 首页 > 知识库问答 >
问题:

@AutoWired在spring定制转换器[副本]

和光启
2023-03-14

我有自定义转换器:

  @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

这是Roles类:

@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);
    }


/....

}

当I@Autowired在controller中扮演角色时,它的工作。

为什么@autowired在转换器中设置null?

共有1个答案

江光明
2023-03-14

这是因为您正在创建roleconverter的新对象。相反,您应该自动连接roleconverter

而不是

registry.addConverter(new RoleConverter());

使用

@Autowired
RoleConverter roleConverter;

@Override
public void addFormatters(FormatterRegistry registry)
{
    registry.addConverter(roleConverter);

}
 类似资料:
  • 如何将自定义转换器添加到mu Spring Boot应用程序?我的实体字段 我的转换器是 我有个例外 我怎样才能修好它,请帮帮我!

  • 我们可以在JSF中创建自己的自定义转换器。 在JSF中定义自定义转换器分为三个步骤。 步 描述 1 通过实现javax.faces.convert.Converter接口创建转换器类。 2 实现上面接口的getAsObject()和getAsString()方法。 3 使用注释@FacesConvertor为自定义转换器分配唯一的ID。 第1步:创建转换器类:UrlConverter.java p

  • XStream允许从头开始编写转换器,以便开发人员可以编写一个全新的实现,介绍如何将对象序列化为XML,反之亦然。 转换器接口提供三种方法 - canConvert - 检查支持的对象类型序列化。 marshal - 它将对象序列化为XML。 unmarshal - 它从XML unmarshal序列化对象。 第1步:实现转换器接口 class StudentConverter implement

  • 我为我的实体定制了一个Hibernate验证器。我的一个验证器使用自动连线的Spring@Repository。应用程序运行良好,我的存储库在我的验证器上自动连接成功。 问题是我找不到测试验证器的方法,因为我不能将我的存储库注入其中。 Person.class: 人名必须是唯一的。班 验证器: 上下文文件有一个验证程序bean: 再次,它工作正常,但我不知道如何测试它。 我的测试文件是:

  • 我的时区转换器出了故障。我用密码 但正确的输出必须是: 2016-06-27 00:32:31.654120 我怎样才能解决这个问题?

  • 问题内容: 我正在尝试使用自定义转换器进行改造 以下是我的自定义转换器 我收到以下错误 在尝试进行此api调用时 我想转换器正在覆盖对api调用的请求,如何避免这种情况并传递在改造服务中定义的请求主体。 回应: 问题答案: 我会做这样的事情: 然后在创建RestAdapter时: 然后: 这不是理想的,因为对象是自定义的,但是我现在能想到的任何其他解决方案都更加复杂。 这里的反序列化器专门为声明为