Rumah > Java > javaTutorial > Mengapa kacang @Autowired saya null dalam pembina tetapi tidak dalam kaedah lain?

Mengapa kacang @Autowired saya null dalam pembina tetapi tidak dalam kaedah lain?

Linda Hamilton
Lepaskan: 2024-11-19 02:02:02
asal
833 orang telah melayarinya

Why is my @Autowired bean null in the constructor but not in other methods?

@Autowired Bean Assignment in Constructor

Isu biasa yang dihadapi semasa menggunakan @Autowired beans ialah ia mungkin pada mulanya menjadi batal apabila dirujuk dalam pembina. Artikel ini meneroka gelagat ini dan menyediakan penyelesaian untuk menanganinya.

Dalam coretan kod yang disediakan, @Autowired bean applicationProperties adalah batal apabila diakses dalam pembina DocumentManager, tetapi ia dimulakan dengan betul apabila dirujuk dalam kaedah lain. Ketidakkonsistenan ini timbul disebabkan oleh kitaran hayat pemulaan kacang.

Pendawaian automatik kacang berlaku selepas pembinaan objek, bermakna ia belum diberikan nilai apabila pembina dipanggil. Untuk menyelesaikan masalah ini, alihkan logik permulaan kepada kaedah berasingan yang diberi penjelasan dengan @PostConstruct. Anotasi ini memastikan bahawa kaedah digunakan selepas instantiasi kacang dan suntikan kebergantungan, membolehkan anda mengakses kacang berwayar automatik dengan pasti.

Snippet Kod Disemak

public class DocumentManager implements IDocumentManager {
  @Autowired
  private IApplicationProperties applicationProperties;

  public DocumentManager() {
  }

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

  private void startOOServer() {
    if (applicationProperties != null) {
      ...
    }
  }
}
Salin selepas log masuk

Dengan pengubahsuaian ini , kod permulaan akan dijalankan selepas pembinaan objek dan memastikan kacang applicationProperties tersedia apabila diperlukan dalam DocumentManager.

Atas ialah kandungan terperinci Mengapa kacang @Autowired saya null dalam pembina tetapi tidak dalam kaedah lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan