【发布时间】:2018-06-05 08:22:33
【问题描述】:
我有这样的课:
@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
}
}
生成的类:
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 做到这一点? 我懒得为自己编写构造函数(并在每次需要新的弹簧成员时更改它)。
【问题讨论】: