You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot继承RepresentationModelAssemblerSupport时Lombok@AllArgsConstructor冲突问题

解决Spring Boot中RepresentationModelAssemblerSupport与Lombok @AllArgsConstructor的冲突问题

问题原因

编译报错的核心原因是:@AllArgsConstructor生成的全参构造方法默认会隐式调用父类的无参构造,但父类RepresentationModelAssemblerSupport仅提供带参构造(需要传入controllerClass和resourceType),没有无参构造。你手动定义的无参构造虽然正确调用了父类构造,但Lombok生成的全参构造未做此操作,导致编译失败。

解决方案

方案1:手动编写全参构造(推荐)

去掉@AllArgsConstructor和@Autowired,手动编写包含依赖的构造方法,同时显式调用父类构造。Spring会自动通过构造注入依赖,无需额外注解:

@Component
public class SaleModelAssembler
        extends RepresentationModelAssemblerSupport<Sale, SaleModel> {

    private final ModelMapper modelMapper;

    public SaleModelAssembler(ModelMapper modelMapper) {
        super(SaleResource.class, SaleModel.class);
        this.modelMapper = modelMapper;
    }

    @Override
    public SaleModel toModel(Sale sale) {
        SaleModel saleModel = createModelWithId(sale.getCode(), sale);

        modelMapper.map(sale, saleModel);

        saleModel.getItems().forEach(saleItemModel -> {
            saleItemModel.getProduct().add(linkTo(ProductResource.class)
                    .slash(saleItemModel.getProduct().getId()).withSelfRel());
        });

        return saleModel;
    }

    @Override
    public CollectionModel<SaleModel> toCollectionModel(Iterable<? extends Sale> entities) {
        return super.toCollectionModel(entities).add(linkTo(SaleResource.class).withSelfRel());
    }
}

方案2:结合Lombok显式指定父类构造调用

若想保留Lombok注解,可手动编写全参构造并添加@AllArgsConstructor,确保构造方法调用父类的带参构造:

@Component
public class SaleModelAssembler
        extends RepresentationModelAssemblerSupport<Sale, SaleModel> {

    private final ModelMapper modelMapper;

    // 保留无参构造(若业务需要)
    public SaleModelAssembler() {
        super(SaleResource.class, SaleModel.class);
    }

    @AllArgsConstructor
    public SaleModelAssembler(ModelMapper modelMapper) {
        super(SaleResource.class, SaleModel.class);
        this.modelMapper = modelMapper;
    }

    // 其他方法不变
}

内容的提问来源于stack exchange,提问作者Rafael Pierre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:08:25