У меня есть такой класс:
@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, такой как 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;
}
}
Вопрос
Есть ли способ сделать это с ломбоком?Мне лень писать конструктор для себя (и менять его каждый раз, когда нужен новый пружинный элемент).