IntelliJ IDEA menunjukkan kesalahan ketika saya menggunakan @Autowired
anotasi Spring di kelas, tetapi kelas berfungsi tanpa masalah.
Inilah pesan kesalahan ini:
Anggota autowired harus didefinisikan dalam spring bean yang valid (@ Component / @ Service, dll.) Less ... (Ctrl + F1) Memeriksa masalah autowiring di kelas bean.
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Jawaban:
Saya memiliki masalah yang sama dengan IntelliJ IDEA 13.1.4 Saya menyelesaikannya dengan menghapus segi Spring (File-> Struktur Proyek) dan membiarkannya hanya menampilkan "Deteksi".
sumber
Jika Anda tahu bahwa kacang itu ada dan itu hanya masalah inspeksi, maka tambahkan yang berikut ini sebelum deklarasi variabel:
Kadang-kadang IntelliJ tidak dapat menyelesaikan jika sebuah kacang telah dideklarasikan, misalnya ketika kacang dimasukkan secara bersyarat dan resolusi kondisi terjadi pada saat runtime.
sumber
Saya memperbaikinya dengan menambahkan peringatan supress:
sumber
Punya kesalahan yang sama di sini!
Tampaknya Intellij tidak dapat memverifikasi apakah implementasi kelas adalah @Service atau @Component.
Selesaikan itu hanya dengan mengubah dari Kesalahan ke Peringatan (Menekan Alt + Enter).
sumber
Hapus file .iml dari semua modul proyek Anda dan selanjutnya masuk ke File -> Invalidate Caches / Restart
sumber
.iml
file saya , memilih untuk mengimpor kembali dalam opsi maven padapom.xml
file tersebut, dan melakukan actrl + s
untuk meregenerasi.iml
. Kesalahan hilang.File -> ProjectStructure -> Modules -> + (di kolom tengah) -> Spring -> OK
sumber
Saya memiliki masalah yang sama. Saya menyelesaikannya dengan menambahkan facet Spring (File-> Project Structure) untuk setiap modul yang relevan, dan kemudian menambahkan file konfigurasi. Untuk beberapa proyek (pegas mvc), file konfigurasi terdeteksi secara otomatis. Namun, untuk proyek jar, saya harus menambahkan file konfigurasi secara manual.
sumber
Pastikan definisi Spring bean Anda benar. Kadang-kadang, aplikasi berfungsi dengan baik, itu hanya menampilkan kesalahan di IDE, periksa file 'iml' proyek Anda jika Anda telah menentukan segi Spring.
sumber
Selesaikan masalah dengan membuka File >> Struktur Proyek >> Aspek dan kemudian menambahkan semua file konfigurasi ke Spring Facet. Setelah itu mulai mendeteksi file tempat kacang berada dan dapat mengurutkan masalah. IntelliJ memberikan cek ini cukup berharga dan IMHO tidak boleh dinonaktifkan.
sumber
Sepertinya masalah visibilitas - pengontrol induk tidak melihat Komponen yang Anda coba sambungkan.
Coba tambahkan
ke pengontrol induk.
sumber
Pastikan IntelliJ Idea (IDE) Anda mengetahui semua konfigurasi pegas yang diperlukan yang menjadi tempat pemeriksaan modul Anda.
Anda dapat memeriksanya di bawah
Terkadang, kami perlu memberi tahu IDE secara eksplisit bahwa konfigurasi pegas berasal dari dependensi (jar ada di classpath project Anda)
sumber
Saya punya masalah yang sama. Milik saya adalah karena kacang yang berisi referensi autowired bukanlah komponen Spring (itu adalah EJB), tetapi mendapat Interceptor SpringBeanAutowiringInterceptor yang memungkinkan penggunaan autowiring. Saya pikir Intellij tidak mengambil kemungkinan ini dalam inspeksi Autowiring-nya.
sumber
Saya punya masalah ini juga. Melakukan alt+ enterdan kemudian meminta untuk menjalankan kembali atau menonaktifkan pemeriksaan Pegas pada saluran yang terkena, memperbaikinya. Ini sepertinya hanya menjadi masalah setelah pembaruan 13.4.
sumber
dalam kasus saya, saya tidak dapat menulis di web.xml:
dan dalam file konteks aplikasi:
setelah menambahkan tag ini dan menjalankan maven untuk membangun kembali proyek kesalahan autowired di intellj desapears dan ikon kacang muncul di margin kiri:
sumber
Milik saya adalah karena tidak menambahkan @Repository pada antarmuka CrudRepository saya, tutorial yang saya tonton tidak menambahkannya di STS dan tidak mengeluh.
sumber
Anda harus memeriksa apakah Anda memiliki @Component, @Repository atau yang serupa ditambahkan di kelas
sumber
Saya menyelesaikannya dengan menambahkan aspek Web.
sumber
sumber
Saya telah memecahkan masalah ini dengan cara ini. Di IntelliJ semua paket Anda harus berada dalam sub paket yang merupakan sub paket main / java. Misalnya saya telah meletakkan semua paket saya di bawah src / main / java / com.misisol.watchStore / dan spring dapat menemukan kacang saya setelahnya.
sumber
Menyuntikkan Bean dengan @Qualifier memecahkan masalah saya.
sumber
Saya memiliki masalah yang sama. Saya menyelesaikannya dengan menghapus centang opsi "Proses kacang yang dijelaskan secara eksplisit" (lihat gambar di bawah). Opsi ini diaktifkan secara default di linux. Sekarang anotasi @Service dan @Configurations terlihat. tangkapan layar
sumber
sedikit terlambat tetapi saya harap ini membantu orang lain.
Pastikan untuk meletakkan @Service pada kelas implementasi untuk layanan tersebut
Begitulah cara saya memperbaiki kesalahan.
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya belum menemukan jawaban yang memecahkan masalah ini untuk saya, jadi saya akan memberikan solusi saya.
Catatan: Saya pikir masalahnya mungkin begini , tetapi masalah saya tidak terkait dengan penerapan antarmuka yang sama dua kali. Menggunakan
@Qualitier
memang membuat masalah saya hilang, tetapi itu adalah perban dan bukan solusi yang tepat jadi saya tidak puas dengan itu.LATAR BELAKANG
Saya ditugaskan untuk memelihara proyek lama yang telah melalui versi pegas yang berbeda dan hanya diperbarui untuk modul terpisah, jadi hal-hal perlu refactoring, untuk sedikitnya. Saya awalnya mendapatkan masalah kacang duplikat dan mengotak-atik hal-hal mengubah masalah bolak-balik antara masalah OP dan masalah kacang duplikat meskipun hanya ada satu kacang; menavigasi ke kacang duplikat selalu pergi ke kelas yang sama.
MASALAH
Masalah hadir pada
@Repository
kelas yang berada@Autowired
di@Service
kelas yang juga memiliki@ComponentScan
anotasi. Saya perhatikan bahwa saya juga memiliki pegasapplication-config.xml
yang melakukancontext:component-scan
paket dasar, yang menurut saya merupakan pendekatan asli dalam versi Spring yang lebih lama. Saya sedang dalam proses membuat cabang baru dengan mengambil bagian dari cabang lama dan cabang yang lebih baru dalam proyek dukungan yang digunakan dalam proyek berbeda yang dikembangkan selama beberapa tahun dan itulah mengapa ada perpaduan dan kecocokan metodologi.SOLUSI SEDERHANA
Karena pendekatan penggunaan yang lebih modern
@ComponentScan
sudah diterapkan, saya baru saja menghapusnyaapplication-config.xml
dan masalahnya sudah terpecahkan.sumber
Yang berikut berhasil untuk saya:
sumber
Saya mungkin sedikit terlambat, tetapi setelah menghabiskan berjam-jam dan meneliti masalah ini.
Saya menemukan bahwa dalam versi terbaru IntelliJ 2020 @AutoWired bersifat opsional dan injeksi ketergantungan berbasis konstruktor lebih disukai.
Saya mengatasi masalah hanya dengan menghapus Anotasi @AutoWired dari kelas Service dan Controller dan menggunakan injeksi ketergantungan berbasis konstruktor.
Tautan ini mungkin membantu.
Selamat Coding!
sumber
Saya mengalami masalah ini dengan hanya satu layanan dengan injeksi ketergantungan berbasis konstruktor dengan versi 2019.2.4 dari IntelliJ. Saya merasa terbantu untuk mengubah nama layanan (shift + f6) dan kemudian membuang perubahan dari level git.
sumber