Ломбок с конструктором по умолчанию - PullRequest
0 голосов
/ 05 июня 2018

У меня есть такой класс:

@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;
    }
}

Вопрос

Есть ли способ сделать это с ломбоком?Мне лень писать конструктор для себя (и менять его каждый раз, когда нужен новый пружинный элемент).

1 Ответ

0 голосов
/ 05 июня 2018

Вы пробовали аннотацию Spring @PostConstruct?

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

Это часть управления жизненным циклом бобов Spring .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...