Mempersiapkan Sertifikasi Spring Profesional. Boot musim semi

Salam untuk semuanya. Artikel ini akan membahas pertanyaan kunci tentang topik "Boot Musim Semi". Ini ditujukan untuk memulai pengembang, dan dapat berguna dalam mempersiapkan wawancara. Ternyata cukup kompak dibandingkan dengan artikel lain.


Daftar isi
  1. Ketergantungan injeksi, wadah, IOC, kacang
  2. AOP (pemrograman berorientasi aspek)
  3. JDBC, Transaksi, JPA, Data Musim Semi
  4. Boot musim semi
  5. Musim semi mvc
  6. Keamanan musim semi
  7. SISA
  8. Pengujian




Pertanyaan


Apa itu spring boot?

Spring Boot adalah sekumpulan modul yang telah dikonfigurasi sebelumnya yang berfungsi di Spring Framework dan menyederhanakan konfigurasi aplikasi Spring.


Berikut adalah beberapa modul pusat:


  • Spring-boot-dependencies. Berisi dependensi versi.
  • Spring-boot-starter-parent. Pom.xml Induk
  • Spring-boot-starter. Modul induk untuk pemula
  • Spring-boot-autoconfigure. Berisi modul untuk starter penyetelan otomatis
  • Spring-boot-actuator. Memungkinkan Anda memantau aplikasi dan mengelola pembuatannya

Apa manfaat dari Spring Boot?
  • Mengkonfigurasi banyak pengaturan secara otomatis untuk menghindari kode boilerplate
  • Memungkinkan Anda dengan mudah mengkonfigurasi aplikasi ketika pengaturan default tidak sesuai
  • Proyek Spring Boot dapat dikompilasi ke file JAR mandiri
  • Menyediakan satu set dependensi yang sudah diuji untuk bekerja dengan benar satu sama lain
  • Ini memiliki wadah web built-in yang memudahkan untuk menguji aplikasi.

Bagaimana cara kerjanya? Bagaimana dia mengerti apa dan bagaimana mengkonfigurasi?

Ini mengasumsikan apa yang Anda butuhkan berdasarkan dependensi di classpath. "Perjanjian Konfigurasi" - ini akan mengkonfigurasi otomatis Spring dengan pengaturan yang dipilih secara khusus, yang kemudian dapat diganti.


Ada beberapa anotasi untuk ini, @ConditionalOnClass , @ConditionalOnBean , @ConditionalOnMissingBean dan @ConditionalOnMissingClass , yang memungkinkan Anda menerapkan kondisi ke kelas-kelas Konfigurasi dan metode @ Bean di kelas-kelas ini.


Sebagai contoh:


  • Kacang hanya akan dibuat jika ketergantungan tertentu ada di classpath.


    Gunakan @ConditionalOnClass , atur nama kelas dari classpath di sana.


  • Kacang hanya akan dibuat jika tidak ada kacang jenis ini atau dengan nama itu di wadah.


    Gunakan @ConditionalOnMissingBean , atur nama atau jenis kacang untuk memeriksa di sana.



Apa yang memengaruhi konfigurasi Spring Boot?

Ada daftar penjelasan kondisi, yang masing-masing digunakan untuk mengontrol pembuatan kacang. Berikut adalah daftar penjelasan seperti itu (sebenarnya ada lebih banyak):


Anotasi
Kondisi untuk dilewati
@ConditionalOnClass
Kehadiran kelas di classpath
@ConditionalOnMissingClass
Kelas tidak ada di classpath
@ConditionalOnBean
Adanya tempat sampah atau jenisnya (kelas kacang)
@ConditionalOnMissingBean
Kurangnya tempat sampah atau jenisnya
@ConditionalOnProperty
Kehadiran Properti Musim Semi
@ConditionalOnResource
Kehadiran file sumber daya
@ConditionalOnWebApplication
Jika ini adalah aplikasi web, WebApplicationContext akan digunakan.
@ConditionalOnNotWebApplication
Jika itu bukan aplikasi web

Bagaimana definisi properti? Di mana PropertySource default terletak di Spring Boot?

Spring Boot menggunakan pesanan khusus PropertySource untuk memungkinkan nilai properti utama. Berikut adalah urutan sumber untuk mendapatkan properti aplikasi:


  1. Pengaturan umum dari direktori ~ / spring-boot devtools.properties
  2. Pengaturan dari anotasi @TestPropertySource dari tes
  3. Atribut @ SpringBootTest # properties
  4. Argumen baris perintah
  5. Properti dari SPRING_APPLICATION_JSON
  6. Parameter untuk menginisialisasi ServletConfig
  7. Parameter untuk menginisialisasi ServletContext
  8. Atribut JNDI dari java: comp / env
  9. Properti Sistem Java (System.getProperties ())
  10. Variabel OS
  11. RandomValueProperySource
  12. Properties untuk profil, misalnya YAML atau application- {profile} .properties
  13. application.properties dan yaml bukan dari toples Anda
  14. application.properties dan yaml dari toples Anda
  15. @PropertySource pada kelas @ Konfigurasi
  16. Properti secara default (ditetapkan melalui SpringApplication.setDefaultProperties() )

Juga tambahkan bahwa property.yml selalu menimpa properti.properties.


Jelaskan anotasi dan konfigurasi utama untuk Spring Boot?

@SpringBootApplication menyediakan 3 properti:


  • @EnableAutoConfiguration - mengaktifkan mekanisme konfigurasi otomatis Spring Boot
  • @ComponentScan - memungkinkan pemindaian komponen dalam paket kelas di mana ia berada
  • @Configuration - memungkinkan Anda untuk mendaftar tambahan. kacang dalam konteks

Berikut ini anotasi kunci lainnya:


@EnableConfigurationProperties - memungkinkan Anda menggunakan @ConfigurationProperties dengan anotasi @ConfigurationProperties


@ConfigurationProperties - memungkinkan Anda untuk mengaitkan file dari file dengan nampan


@WebMvcTest - digunakan untuk tes Spring MVC


@SpringBootTest - digunakan saat Anda membutuhkan fungsi Spring Boot dalam pengujian


@DataJpaTest - digunakan untuk menguji komponen JPA


Apa perbedaan antara wadah inline dan PERANG?

Kontainer tertanam adalah server yang datang dengan aplikasi terakhir, sementara WAR adalah arsip yang dapat digunakan untuk server eksternal.


Wadah servlet baik untuk mengelola beberapa aplikasi pada host yang sama, tetapi mereka tidak sangat berguna untuk mengelola hanya satu aplikasi.


Dengan lingkungan cloud menggunakan satu aplikasi per mesin virtual adalah cara yang disukai dan lebih umum. Kerangka kerja modern ingin lebih kompatibel dengan awan, sehingga mereka beralih ke wadah tertanam.


Kontainer bawaan apa yang didukung Spring?

Spring Boot mendukung Tomcat, Jetty, dan Undertow.
Standarnya adalah TomCat. Untuk mengubah wadah, tambahkan saja ketergantungan yang diinginkan di pom.xml.


Apa yang dilakukan @EnableAutoConfiguration?

Ini memungkinkan Anda untuk menggunakan konfigurasi otomatis. Konfigurasi otomatis pada Boot Musim Semi mencoba membuat dan mengkonfigurasi kacang berdasarkan dependensi di classpath, agar pengembang dapat dengan cepat mulai bekerja dengan berbagai teknologi dan menghapus kode boilerplate.


Apakah komponen Spring Boot memindai? Di mana dia mencari mereka secara default?

Ya, itu terjadi jika ada anotasi @SpringBootApplication yang berisi anotasi @ComponentScanning .


Secara default, Spring mencari kacang dalam paket yang sama dengan kelas beranotasi. Ini bisa diganti dengan menentukan kelas (atau paket) di opsi scanBasePackageClasses atau scanBasePackage .


Apa itu Spring Boot Starter POM? Bagaimana ini bisa bermanfaat?

Permulaan menyediakan sekumpulan deskriptor ketergantungan yang berguna yang dapat Anda sertakan dalam aplikasi Anda. Anda mendapatkan satu sumber untuk pegas dan teknologi terkait tanpa harus mencari dan menyalin-tempel deskripsi penggunaan.
Misalnya, jika Anda ingin memulai dengan Spring JPA, tambahkan saja ketergantungan spring-boot-starter-data-jpa ke proyek Anda.


Permulaan berisi sebagian besar dependensi yang Anda perlukan untuk menjalankan proyek, bekerja dengan cepat dan konsisten, dan mendukung serangkaian dependensi transitif.


Bisakah Anda mengontrol pencatatan melalui Spring Boot?

Ya Secara default, pesan dengan prioritas ERROR, WARN, INFO akan ditampilkan di aplikasi. Untuk mengaktifkan output level DEBUG atau TRACE, Anda harus menggunakan --trace --debug / --trace atau menyetel properti debug / trace = true.


 logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR 

Secara default, Boot Sprin hanya masuk ke konsol. Jika Anda ingin mencatat peristiwa ke file, Anda harus mengatur properti logging.file atau logging.path menjadi true (misalnya, dalam properti application.prop).


Pencatatan warna


Di konsol yang mendukung ANSI, untuk meningkatkan keterbacaan, pesan dari berbagai tingkatan dapat disorot dengan warna yang berbeda. Ini adalah bagaimana hal itu dikonfigurasi dalam file properti:


 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow} 

Jika Anda ingin menulis pergi ke file lain, Anda juga dapat mengkonfigurasi ini (YAML):


 logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG 

Source: https://habr.com/ru/post/id471312/


All Articles