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!