Anotasi Spring Boot

Artikel ini bagian dari serial: • Spring Core Annotations

• Anotasi Web Musim Semi

• Anotasi Spring Boot (artikel saat ini) • Penjadwalan Musim Semi Anotasi

• Anotasi Data Musim Semi

• Anotasi Spring Bean

1. Ikhtisar

Spring Boot membuat konfigurasi Spring menjadi lebih mudah dengan fitur konfigurasi otomatisnya.

Dalam tutorial ini cepat, kita akan menjelajahi anotasi dari org.springframework.boot.autoconfigure dan org.springframework.boot.autoconfigure.condition paket.

2. @SpringBootApplication

Kami menggunakan anotasi ini untuk menandai kelas utama aplikasi Spring Boot :

@SpringBootApplication class VehicleFactoryApplication { public static void main(String[] args) { SpringApplication.run(VehicleFactoryApplication.class, args); } }

@SpringBootApplication merangkum anotasi @Configuration , @EnableAutoConfiguration , dan @ComponentScan dengan atribut defaultnya.

3. @EnableAutoConfiguration

@EnableAutoConfiguration , seperti namanya, mengaktifkan konfigurasi otomatis. Ini berarti Spring Boot mencari kacang konfigurasi otomatis di jalur kelasnya dan menerapkannya secara otomatis.

Perhatikan, kita harus menggunakan anotasi ini dengan @Configuration :

@Configuration @EnableAutoConfiguration class VehicleFactoryConfig {}

4. Kondisi Konfigurasi Otomatis

Biasanya, saat kami menulis konfigurasi otomatis kustom kami , kami ingin Spring menggunakannya secara bersyarat . Kami dapat mencapai ini dengan anotasi di bagian ini.

Kita dapat menempatkan penjelasan di bagian ini pada @Configuration kelas atau @Bean metode.

Di bagian selanjutnya, kami hanya akan memperkenalkan konsep dasar di balik setiap kondisi. Untuk informasi lebih lanjut, silakan kunjungi artikel ini.

4.1. @ConditionalOnClass dan @ConditionalOnClass

Dengan menggunakan kondisi ini, Spring hanya akan menggunakan kacang konfigurasi otomatis yang ditandai jika kelas dalam argumen anotasi ada / tidak ada :

@Configuration @ConditionalOnClass(DataSource.class) class MySQLAutoconfiguration { //... }

4.2. @ConditionalOnOn dan @ConditionalOnissingBean

Kita dapat menggunakan anotasi ini ketika kita ingin mendefinisikan kondisi berdasarkan ada atau tidaknya kacang tertentu :

@Bean @ConditionalOnBean(name = "dataSource") LocalContainerEntityManagerFactoryBean entityManagerFactory() { // ... }

4.3. @Kontenvideo

Dengan anotasi ini, kita dapat membuat kondisi pada nilai properti :

@Bean @ConditionalOnProperty( name = "usemysql", havingValue = "local" ) DataSource dataSource() { // ... }

4.4. @Kontenvideo

Kita dapat membuat Spring menggunakan definisi hanya jika ada sumber daya tertentu :

@ConditionalOnResource(resources = "classpath:mysql.properties") Properties additionalProperties() { // ... }

4.5. @ConditionalOnWebApplication dan @ConditionalOnNotWebApplication

Dengan anotasi ini, kita dapat membuat kondisi berdasarkan apakah aplikasi saat ini adalah atau bukan aplikasi web :

@ConditionalOnWebApplication HealthCheckController healthCheckController() { // ... }

4.6. @ConditionalExpression

Kita dapat menggunakan anotasi ini dalam situasi yang lebih kompleks. Spring akan menggunakan definisi yang ditandai ketika ekspresi SpEL dievaluasi menjadi true :

@Bean @ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}") DataSource dataSource() { // ... }

4.7. @Bersyarat

Untuk kondisi yang lebih kompleks, kita bisa membuat kelas yang mengevaluasi kondisi kustom . Kami memberi tahu Spring untuk menggunakan kondisi khusus ini dengan @Conditional :

@Conditional(HibernateCondition.class) Properties additionalProperties() { //... }

5. Kesimpulan

Di artikel ini, kami melihat ikhtisar tentang bagaimana kami dapat menyempurnakan proses konfigurasi otomatis dan memberikan ketentuan untuk kacang konfigurasi otomatis kustom.

Seperti biasa, contoh tersedia di GitHub.

Berikutnya » Anotasi Penjadwalan Musim Semi « Anotasi Web Musim Semi Sebelumnya