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!