将默认公共构造函数添加到生成的构建器内部类

时间:2018-05-14 08:59:15

标签: java spring lombok

我使用Lombok框架生成样板代码,例如:

import lombok.*;


@Builder
@Value
public final class SocketConfig {

    @Builder.Default
    private int soTimeoutMilliseconds = 0;

    @Builder.Default
    private boolean soReuseAddress = false;

    @Builder.Default
    private int soLingerSeconds = -1;

    private boolean soKeepAlive;

    @Builder.Default
    private boolean tcpNoDelay = false;

} 

为了创建构建器实例,我曾调用SocketConfig.builder()。但为了更好地与spring bean创建集成,我尝试创建FactoryBean。但是由于构建器类缺少默认构造函数而导致编译错误,没有找到任何关于它的文档。龙目岛有可能吗?我的意思是在构建器上创建一个默认构造函数,而不是在原始类上。换句话说,我想要2个选项来创建构建器实例:SocketConfig.builder()new SocketConfig.SocketConfigBuilder()

import org.springframework.beans.factory.FactoryBean;

public class SocketConfigFactoryBean extends SocketConfig.SocketConfigBuilder implements FactoryBean<SocketConfig> {



    @Override
    public SocketConfig getObject() throws Exception {
        return build();
    }

    @Override
    public Class<?> getObjectType() {
        return SocketConfig.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
}

1 个答案:

答案 0 :(得分:1)

使用注释NoArgsConstructor

  

生成一个no-args构造函数。如果是,将生成错误消息   由于final的存在,无法编写这样的构造函数   字段。

Read also this.