Spring Boot CommandLineRunner и конструктор внедрения - PullRequest
0 голосов
/ 25 августа 2018

Я изучаю Spring Boot CommandLineRunner.И у меня есть этот код:

@Component
public class DataLoader implements CommandLineRunner {

    private final OwnerService ownerService;
    private final VetService vetService;

    public DataLoader() {
        ownerService = new OwnerServiceMap();
        vetService = new VetServiceMap();
    }

    @Override
    public void run(String... args) throws Exception {
    ...
    }

Когда этот конструктор называется?Я хочу знать, если это инъекция конструктора или нет?Я вижу, что @Autowired нет, но я знаю, что не обязательно ставить @Autowired, когда есть только один конструктор.Любая обратная связь будет оценена!

1 Ответ

0 голосов
/ 25 августа 2018

Да, будет вызываться конструктор по умолчанию, но это , а не инжекция конструктора - вам нечего вставлять в этот конструктор для начала.

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

И так как вы делаете new OwnerServiceMap()/new VetServiceMap() (используя оператор new) вы обойдете прокси-сервер Spring - таким образом, те, у кого есть некоторые аннотации, такие как @Transactional, давайте предположим, не будут работать.

...