Должен ли я никогда не использовать @PostConstruct в Spring Boot, когда у меня есть конструктор All Args?

В нашем проекте мы не используем инъекцию сеттера или файла, мы используем только инъекцию конструктора, и я знаю, что оба варианта 1. и 2. могут работать.

  • Небезопасно работать с бинами в конструкторе в таком случае?

Или весенняя загрузка 2+ что-то делает, и мне лучше использовать вариант 1. вместо 2. Я не могу представить случай, когда вариант 1 пойдет не так.

@Component
@ConfigurationProperties("config")
public class ServiceConfigProperties  {
    // .... some code
}
  1. Может быть небезопасно? - но выглядит лучше
@Component
public class Service {
    private boolean skipCheck;

    public Service(ServiceConfigProperties configProps) {
        this.skipCheck = configProps.isSkipCheck();
    }
}
  1. Не может быть небезопасно?
@Component
public class Service {
    private boolean skipCheck;
    private ServiceConfigProperties configProps;

    public Service(ServiceConfigProperties configProps) {
        this.configProps= configProps;
    }

    @PostConstruct
    public void initConfig() {
        this.skipCheck= configProps.isSkipCheck();
    }   
}

person Igor Volynskiy    schedule 13.05.2021    source источник


Ответы (1)


С парой предостережений взаимодействие с bean-компонентами, внедренными в конструктор, внутри конструктора полностью безопасно. .

person crizzis    schedule 13.05.2021