Rumah  >  Artikel  >  Java  >  Mengapa Kacang Autowayar Saya Null dalam Pembina?

Mengapa Kacang Autowayar Saya Null dalam Pembina?

DDD
DDDasal
2024-11-16 05:45:03892semak imbas

 Why is My Autowired Bean Null in the Constructor?

Pendawaian Auto Kacang dalam Pembina: Memahami Rujukan Null

Apabila bekerja dengan POJO yang diuruskan Spring, adalah perkara biasa untuk menyuntik kebergantungan menggunakan @Autowired anotasi. Walau bagaimanapun, sesetengah pembangun menghadapi isu yang membingungkan di mana kacang berwayar automatik adalah batal apabila diakses dalam pembina. Artikel ini bertujuan untuk menjelaskan tingkah laku ini dan menyediakan penyelesaian.

Seperti yang dinyatakan dalam jawapan yang disediakan, pendawaian automatik biasanya berlaku selepas pembinaan objek. Ini bermakna bahawa sebarang rujukan kepada kacang berwayar automatik dalam pembina mungkin akan menjadi batal. Untuk menangani perkara ini, adalah disyorkan untuk mengalihkan kod permulaan daripada pembina kepada kaedah berasingan yang diberi penjelasan dengan @PostConstruct.

Coretan kod yang diubah suai berikut menggambarkan pendekatan ini:

@Component
public class DocumentManager implements IDocumentManager {

  @Autowired
  private IApplicationProperties applicationProperties;

  // Move initialization code to a PostConstruct method
  @PostConstruct
  public void init() {
    startOOServer();
  }

  private void startOOServer() {
    if (applicationProperties != null) {
      // Rest of the initialization code here
    }
  }

  // ... Rest of the class remains the same
}

Dengan membuat anotasi kaedah init dengan @PostConstruct, Spring akan memanggilnya secara automatik selepas kacang telah dibina tetapi sebelum ia dimulakan sepenuhnya. Ini memastikan bahawa kacang applicationProperties tersedia untuk digunakan dalam logik permulaan.

Atas ialah kandungan terperinci Mengapa Kacang Autowayar Saya Null dalam Pembina?. 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