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

Mengapa Pendawaian Auto Gagal dalam Pembina But Spring?

Linda Hamilton
Lepaskan: 2024-11-12 03:14:02
asal
909 orang telah melayarinya

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();
  }

  ...
Salin selepas log masuk

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!

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