Saya telah membuat unit test sederhana tetapi IntelliJ salah menyorotnya merah. menandainya sebagai kesalahan
Tidak kacang?
Seperti yang Anda lihat di bawah, ia lulus tes? Jadi harus Autowired?
java
spring
intellij-idea
annotations
autowired
Robbo_UK
sumber
sumber
Jawaban:
Saya memiliki masalah yang sama ketika membuat aplikasi Boot Spring menggunakan
@SpringBootApplication
anotasi mereka . Anotasi ini mewakili@Configuration
,@EnableAutoConfiguration
dan@ComponentScan
sesuai dengan referensi pegas .Seperti yang diharapkan, anotasi baru berfungsi dengan baik dan aplikasi saya berjalan dengan lancar tetapi, Intellij terus mengeluh tentang
@Autowire
dependensi yang tidak terpenuhi . Segera setelah saya berubah kembali untuk menggunakan@Configuration
,@EnableAutoConfiguration
dan@ComponentScan
secara terpisah, kesalahan berhenti. Tampaknya Intellij 14.0.3 (dan kemungkinan besar, versi sebelumnya juga) belum dikonfigurasikan untuk mengenali@SpringBootApplication
anotasi.Untuk saat ini, jika kesalahannya sangat mengganggu Anda, maka kembalilah ke ketiga anotasi yang terpisah. Jika tidak, abaikan Intellij ... resolusi dependensi Anda telah dikonfigurasikan dengan benar, karena pengujian Anda berlalu.
Selalu ingat...
sumber
@SpringBootApplication
saya menerima kesalahan ini. Saya mengikuti saran dari @ Jaos Matos dengan menggunakanscanBasePackages
parameter untuk@SpringBootApplication
dan menentukan paket / namespaces yang harus dipindai.Tambahkan anotasi Spring di
@Repository
atas kelas repositori.Saya tahu ini akan berfungsi tanpa anotasi ini. Tetapi jika Anda menambahkan ini, IntelliJ tidak akan menampilkan kesalahan.
Jika Anda menggunakan Spring Data dengan
Repository
kelas ekstensi, itu akan menjadi halaman konflik. Maka Anda harus menunjukkan halaman kejelasan.Dan selanjutnya Anda dapat secara otomatis menyimpan repositori Anda tanpa kesalahan.
Ini mungkin bukan solusi yang baik (saya kira Anda mencoba mendaftar repositorium dua kali). Tetapi bekerja untuk saya dan jangan menunjukkan kesalahan.
Mungkin di versi baru IntelliJ dapat diperbaiki: https://youtrack.jetbrains.com/issue/IDEA-137023
sumber
Versi IntelliJ IDEA Ultimate (2016.3.4 Build 163) saya tampaknya mendukung hal ini. Caranya adalah Anda harus mengaktifkan plugin Spring Data.
sumber
Terkadang Anda diminta untuk menunjukkan di mana @ComponentScan harus memindai komponen. Anda dapat melakukannya dengan mengirimkan paket sebagai parameter anotasi ini, misalnya:
Namun, seperti yang telah disebutkan, anotasi @SpringBootApplication menggantikan @ComponentScan, maka dalam hal ini Anda harus melakukan hal yang sama:
Setidaknya dalam kasus saya, Intellij berhenti mengeluh.
sumber
@SpringBootApplication(scanBasePackages={"com.a.b, com.a.c"})
dan meskipun aplikasi bekerja dengan baik, intellij tidak menyukainya. Mengubah untuk@SpringBootApplication(scanBasePackages={"com.a.b", "com.a.c"})
diperbaiki untuk saya!Saya selalu menyelesaikan masalah ini dengan melakukan hal berikut .. Pengaturan> Inspeksi> Pegas Inti> Kode daripada Anda beralih dari kesalahan ke peringatan opsi tingkat permasalahan
sumber
Saya menggunakan spring-boot 2.0, dan intellij 2018.1.1 edisi pamungkas dan saya menghadapi masalah yang sama.
Saya dipecahkan dengan menempatkan @EnableAutoConfiguration di kelas aplikasi utama
sumber
Redundant declaration: @SpringBootApplication already applies @EnableAutoConfiguration
¯ \ _ (ツ) _ / ¯Periksa apakah Anda melewatkan anotasi @Service di kelas layanan Anda, itulah yang terjadi pada saya.
sumber
Menempatkan
@Component
atau@configuration
dalam file konfigurasi kacang Anda tampaknya berfungsi, yaitu sesuatu seperti:sumber
Jika Anda tidak ingin membuat perubahan pada kode Anda hanya untuk membuat IDE Anda senang. Saya telah menyelesaikannya dengan menambahkan semua komponen ke aspek Spring.
sumber
Selama tes Anda melewati Anda baik, tekan
alt + enter
dengan mengambil kursor atas kesalahan dan di dalam submenu dari item pertama Anda akan menemukanDisable Inspection
pilih itusumber
Saya memiliki masalah serupa dalam aplikasi Spring Boot. Aplikasi ini menggunakan Feign (permintaan klien sintesis HTTP dari antarmuka beranotasi). Dengan antarmuka yang
SomeClient
dianotasi@FeignClient
, Feign menghasilkan kelas proxy runtime yang mengimplementasikan antarmuka ini. Ketika beberapa komponen Pegas mencoba untuk mengotomatiskan jenis kacangSomeClient
, Ide tidak mengeluh kacang jenis yangSomeClient
ditemukan karena tidak ada kelas nyata yang benar-benar ada dalam proyek dan Ide tidak diajarkan untuk memahami@FeignClient
anotasi dengan cara apa pun.Solusi: antarmuka
SomeClient
dengan catatan@Component
. (Dalam kasus kami, kami tidak menggunakan@FeignClient
anotasiSomeClient
secara langsung, kami lebih suka menggunakan metaannotasi@OurProjectFeignClient
yang dianotasi@FeignClient
dan menambahkan@Component
anotasi agar berfungsi juga.)sumber
@Component
antarmuka menyelesaikan masalah. Tapi saya pikir ini bukan cara yang benar ... Menurut saya ini adalah bug di IntelliJ IDEA atau tidak terlalu sulit IntelliJ IDEA tidak siap untuk versi Feign yang lebih baru. Ia bekerja tanpa@Component
di versi yang lebih awal (di mana@FeignClient
anotasi berada diorg.springframework.cloud.netflix.feign
bukannyaorg.springframework.cloud.openfeign
- mungkin ini adalah penyebab masalah?). Sudahkah Anda menemukan rincian lebih lanjut (mungkin tiket bug) untuk ini?@Component
) berasal@FeignClient
dariorg.springframework.cloud.netflix.feign
) paket.Konfigurasikan konteks aplikasi dan semuanya akan beres.
sumber
Dan satu informasi penting terakhir - tambahkan
ComponentScan
sehingga aplikasi tahu tentang hal-hal yang perlu disambungkan. Ini tidak relevan dalam kasus pertanyaan ini. Namun jika tidak@autowiring
ada yang dilakukan sama sekali maka ini kemungkinan solusi Anda.sumber
Yang perlu Anda lakukan adalah menambahkan
@ComponentScan("package/include/your/annotation/component")
diAppConfiguration.java
.Karena saya pikir
AppConfiguraion.java
paket Anda lebih dalam dari komponen anotasi Anda (@Service, @Component ...),seperti
"package/include/your/annotation/component/deeper/config"
.sumber
Saya memiliki masalah serupa dalam aplikasi saya. Ketika saya menambahkan anotasi, salah memilih highliting menghilang.
sumber
Saya menggunakan anotasi ini untuk menyembunyikan kesalahan ini ketika muncul di IntelliJ v.14:
sumber
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Bagi saya solusinya adalah menempatkan
@EnableAutoConfiguration
di kelas Aplikasi di bawah@SpringBootApplication
yang akan menggarisbawahi karena itu berlebihan. Hapus dan voila semua peringatan Anda tentang kacang yang hilang lenyap! Musim Semi konyol ...sumber
dalam Kasus saya, Direktori yang saya coba @Autowired tidak berada pada level yang sama,
setelah mengaturnya pada level struktur yang sama, kesalahan menghilang
Semoga ini bisa membantu seseorang!
sumber
Solusi saya untuk masalah ini dalam aplikasi booting pegas saya adalah membuka konteks aplikasi pegas dan menambahkan kelas untuk kacang autowired yang hilang secara manual!
(akses melalui menu Struktur Proyek atau jendela pegas alat ... sunting "Konteks Aplikasi Pegas")
Jadi alih-alih SpringApplicationContext hanya berisi konfigurasi pegas ExampleApplication saya, ia juga mengandung Bean yang hilang:
SpringApplicationContext:
et voilà: Pesan kesalahannya hilang!
sumber
Ini sepertinya masih menjadi bug di IntelliJ terbaru dan ada hubungannya dengan kemungkinan masalah caching?
Jika Anda menambahkan anotasi @Repositori seperti mk321 yang disebutkan di atas, simpan, lalu hapus anotasi dan simpan lagi, ini memperbaiki masalah.
sumber
Yang perlu Anda lakukan untuk membuat pekerjaan ini adalah kode berikut:
sumber
Saya hanya perlu menggunakan @EnableAutoConfiguration untuk mengatasinya, namun kesalahan ini tidak memiliki dampak fungsional.
sumber
Ini dapat diatasi dengan menempatkan @EnableAutoConfiguration pada kelas utama aplikasi boot spring.
sumber
Terkadang - dalam kasus saya yaitu - alasannya adalah impor yang salah. Saya tidak sengaja mengimpor
dari pada
dengan secara membabi buta menerima pilihan pertama dalam impor yang disarankan Idea. Butuh waktu beberapa menit saat pertama kali terjadi :-)
sumber
Anehnya, proyek berorientasi A Feign yang berhasil dijalankan dengan Eclipse tidak dapat berjalan di InteliJ. Ketika memulai aplikasi, InteliJ mengeluh tentang klien Feign yang saya coba untuk menyuntikkan ke lapisan serviceImpl yang mengatakan: field personRestClient (klien Feign saya) di ... diperlukan kacang jenis ... yang tidak dapat ditemukan. Pertimbangkan mendefinisikan jenis kacang '....' di konfigurasi Anda.
Saya membuang waktu lama untuk mencoba memahami apa yang salah. Saya menemukan solusi (untuk InteliJ) yang saya tidak sepenuhnya mengerti:
Atau pilih Eclipse :)
sumber
Periksa apakah paket kacang Anda ditulis dengan benar
sumber
Gunakan @AutoConfigureMockMvc untuk kelas uji.
sumber
Saya memecahkan masalah dengan menginstal plugin mybatis di IDEA. Ketika saya menginstal Plugin Mybatis, itu menghilang.
sumber
sederhana kamu harus melakukan 2 langkah
sumber
IntelliJ IDEA Ultimate
Tambahkan kelas utama Anda ke IntelliJ Spring Application Context, misalnya Application.java
File
->Project Structure..
sisi kiri: Pengaturan Proyek -> Modul
sisi kanan: temukan di struktur paket Anda
Spring
dan tambahkan+
Application.java
sumber