Rumah >Java >javaTutorial >Bagaimanakah Anotasi @Autowired Spring Mengendalikan Suntikan Ketergantungan?

Bagaimanakah Anotasi @Autowired Spring Mengendalikan Suntikan Ketergantungan?

Barbara Streisand
Barbara Streisandasal
2024-12-10 18:24:11343semak imbas

How Does Spring's @Autowired Annotation Handle Dependency Injection?

Memahami Penggunaan Spring @Autowired

Anotasi @Autowired menghapuskan keperluan untuk pendawaian manual dalam konfigurasi XML. Ia mengautomasikan suntikan kebergantungan berdasarkan padanan jenis.

Contoh Autowayar

Mari kita lihat semula kelas contoh:

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }
}

public class MovieRecommender {

    private MovieCatalog movieCatalog;

    private CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    public void prepare(MovieCatalog movieCatalog,
                    CustomerPreferenceDao customerPreferenceDao) {
        this.movieCatalog = movieCatalog;
        this.customerPreferenceDao = customerPreferenceDao;
    }
}

Bagaimana Spring Autowires Pelbagai Biji Pelaksana

Dalam pengisytiharan @Autowired, Spring menggunakan jenis parameter (MovieCatalog dan CustomerPreferenceDao) untuk mencari kacang yang sepadan. Jika berbilang kacang yang sepadan ditemui, ia menimbulkan pengecualian.

Mengendalikan Kacang Sama Jenis

Jika aplikasi anda mempunyai berbilang kacang yang melaksanakan antara muka yang sama, anda boleh menggunakan anotasi @Qualifier untuk menentukan kacang yang sepatutnya disuntik.

@Qualifier("redBean")
class Red implements Color {
    // Class code
}

@Qualifier("blueBean")
class Blue implements Color {
    // Class code
}

// Main Class
@Autowired
@Qualifier("redBean")
private Color color;

Sebagai alternatif, anda boleh menggunakan @Resource untuk menggabungkan @Autowired dan @Qualifier ke dalam satu anotasi:

@Resource(name="redBean")
private Color color;

Amalan Terbaik

Pertimbangkan untuk menggunakan @Inject (sebahagian daripada JSR-330) dan bukannya @Autowired untuk mudah alih. Selain itu, adalah disyorkan untuk memberi anotasi kepada pembina dan bukannya kaedah untuk pengendalian pengecualian yang lebih baik.

Kesimpulan

@Autowired memperkemas suntikan pergantungan dengan mengautomasikan proses pendawaian kacang, memastikan yang diperlukan tanggungan disuntik di tempat yang diperlukan. Dengan menggunakan amalan terbaik, anda boleh memastikan pendawaian automatik yang cekap dan boleh dipercayai dalam aplikasi Spring anda.

Atas ialah kandungan terperinci Bagaimanakah Anotasi @Autowired Spring Mengendalikan Suntikan Ketergantungan?. 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