带有默认构造函数的 Lombok

Lombok with default-constructor

我有一个 class 这样的:

@Service("aSpringService")
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
public class ServiceImpl implements Service {
    @NonNull
    private final Member1 m1;

    @NonNull
    private final Member2 m2;

    @NonNull
    private final Member3 m3;

}

构造函数将由 Lombok 创建,在运行时,spring 会将成员注入到构造函数中。 现在我需要一个设置方法并被 lombok 困住了。看来,龙目岛不能叫自己写的东西。

我想要的

我想要 Lombok-Annotation 的新参数,例如 useDefaultConstructor。当此参数存在时,自动化代码(来自 Lombok)将调用无参数构造函数,我可以自己编写该构造​​函数。

@RequiredArgsConstructor(onConstructor = @__({@Autowired}), useDefaultConstructor = true)
// Note the "useDefaultConstructor = true" 
public class ServiceImpl implements Service {
    @NonNull
    private final Member1 m1; 

    private ServiceImpl() {
        //some self-written setup-code
    }
}

生成class:

public class ServiceImpl implements Service {
    private final Member1 m1;

    // This constructor is not generated by lombok
    private ServiceImpl() {
        //some self-written setup-code
    }

    // Constructor generated by lombok
    @Autowired
    public ServiceImpl(Member1 m1) {
       this(); // <- only created when "useDefaultConstructor" is present
       this.m1 = m1;
    }
}

问题

有没有办法用 lombok 做到这一点? 我懒得为自己编写构造函数(每次需要新的 spring-成员时都要更改它)。

您尝试过 Spring @PostConstruct 注释吗?

@PostConstruct
public void init() {
    // setup-code
}

它是 Spring 的 beans lifecycle management 的一部分。