Anotasi dapat digunakan, tetapi bukan satu-satunya solusi untuk mematikan konfigurasi XML. Saya sarankan mencampur keduanya!
Misalnya, jika menggunakan Spring, sepenuhnya intuitif untuk menggunakan XML untuk bagian injeksi ketergantungan aplikasi Anda. Ini menjauhkan ketergantungan kode dari kode yang akan menggunakannya, sebaliknya, menggunakan semacam anotasi dalam kode yang memerlukan dependensi membuat kode mengetahui konfigurasi otomatis ini.
Namun, daripada menggunakan XML untuk manajemen transaksional, menandai metode sebagai transaksional dengan anotasi masuk akal, karena ini adalah informasi yang mungkin ingin diketahui oleh seorang programmer. Tetapi suatu antarmuka akan disuntikkan sebagai SubtipeY bukan SubtypeX tidak boleh dimasukkan dalam kelas, karena jika sekarang Anda ingin menyuntikkan SubtypeX, Anda harus mengubah kode Anda, sedangkan Anda memiliki kontrak antarmuka sebelumnya, jadi dengan XML, Anda hanya perlu mengubah pemetaan XML dan cukup cepat dan tidak menyakitkan untuk melakukannya.
Saya belum pernah menggunakan anotasi JPA, jadi saya tidak tahu seberapa bagusnya, tetapi saya berpendapat bahwa meninggalkan pemetaan kacang ke basis data dalam XML juga bagus, karena objek seharusnya tidak peduli dari mana informasi itu berasal , seharusnya peduli apa yang dapat dilakukannya dengan informasinya. Tetapi jika Anda suka JPA (saya tidak punya expirience dengan itu), tentu saja, lakukanlah.
Secara umum: Jika anotasi menyediakan fungsionalitas dan bertindak sebagai komentar di dalam dan dari dirinya sendiri, dan tidak mengikat kode ke beberapa proses tertentu untuk berfungsi secara normal tanpa anotasi ini, maka pergi untuk anotasi. Misalnya, metode transaksional yang ditandai sebagai transaksional tidak mematikan logika operasinya, dan juga berfungsi sebagai komentar tingkat kode yang baik. Jika tidak, informasi ini mungkin paling baik dinyatakan sebagai XML, karena meskipun pada akhirnya akan mempengaruhi bagaimana kode beroperasi, itu tidak akan mengubah fungsi utama dari kode, dan karenanya tidak termasuk dalam file sumber.
@Component
dan@Autowired
, ini adalah dikotomi yang salah. Ada beberapa cara lain untuk membuat konfigurasi Anda, termasuk JavaConfig dan groovy config.