Rumah  >  Artikel  >  Java  >  Mengapa Pendawaian Auto Gagal dalam Pembina But Spring?

Mengapa Pendawaian Auto Gagal dalam Pembina But Spring?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 03:14:02827semak imbas

Why Does Autowiring Fail in Spring Boot Constructors?

Pendawaian Auto Konstruktor dalam But Spring

Apabila bekerja dengan Boot Spring, menyuntik kebergantungan ke dalam pembina kacang menggunakan pendawaian automatik kadangkala boleh menghasilkan nilai nol. Ini kerana autowiring berlaku selepas pembinaan kacang.

Dalam coretan kod yang diberikan, kacang @Autowired applicationProperties adalah batal apabila dirujuk dalam pembina DocumentManager, tetapi tidak apabila dirujuk dalam kaedah tukar. Isunya ialah pendawaian automatik berlaku selepas pembina dilaksanakan.

Penyelesaian: Permulaan Selepas Pembinaan

Untuk menyelesaikan masalah ini, gunakan @ Anotasi PostConstruct pada kaedah dalam kelas kacang di mana kebergantungan harus dimulakan. Kaedah ini akan dipanggil selepas pembinaan kacang dan boleh digunakan untuk melaksanakan logik permulaan yang diperlukan.

Begini cara kelas DocumentManager boleh diubah suai untuk menggunakan anotasi @PostConstruct:

@Component
public class DocumentManager implements IDocumentManager {

  private Log logger = LogFactory.getLog(this.getClass());
  private OfficeManager officeManager = null;
  private ConverterService converterService = null;

  @Autowired
  private IApplicationProperties applicationProperties;

  // Remove initialization code from constructor
  public DocumentManager() {
  }

  @PostConstruct
  public void initialize() {
    startOOServer();
  }

  ...

Dalam ini kod yang disemak, logik permulaan telah dialihkan ke kaedah permulaan, yang diberi penjelasan dengan @PostConstruct. Ini memastikan bahawa applicationProperties bean tersedia apabila kaedah dipanggil selepas pembinaan kacang.

Atas ialah kandungan terperinci Mengapa Pendawaian Auto Gagal dalam Pembina But Spring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn