Anotasi Boot Musim Semi

Artikel ini adalah sebahagian daripada siri: • Anotasi Inti Musim Semi

• Anotasi Web Spring

• Anotasi Boot Musim Semi (artikel semasa) • Anotasi Penjadualan Musim Semi

• Anotasi Data Musim Semi

• Anotasi Kacang Musim Bunga

1. Gambaran keseluruhan

Spring Boot menjadikan konfigurasi Spring lebih mudah dengan ciri konfigurasi automatiknya.

Dalam tutorial ini cepat, kami akan meneroka anotasi dari org.springframework.boot.autoconfigure dan org.springframework.boot.autoconfigure.condition pakej.

2. @SpringBootApplication

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

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

@SpringBootApplication merangkumi @Configuration , @EnableAutoConfiguration , dan @ComponentScan anotasi dengan atribut lalai mereka.

3. @EnableAutoConfiguration

@EnableAutoConfiguration , seperti namanya, membolehkan konfigurasi automatik. Ini bermaksud bahawa Spring Boot mencari kacang konfigurasi automatik di classpathnya dan secara automatik menerapkannya.

Perhatikan, bahawa kita harus menggunakan anotasi ini dengan @Configuration :

@Configuration @EnableAutoConfiguration class VehicleFactoryConfig {}

4. Syarat Konfigurasi Auto

Biasanya, semasa kita menulis konfigurasi automatik khas kita, kita mahu Spring menggunakannya secara bersyarat . Kami dapat mencapainya dengan penjelasan di bahagian ini.

Kita boleh meletakkan penjelasan dalam seksyen ini di @Configuration kelas atau @Bean kaedah.

Pada bahagian seterusnya, kami hanya akan memperkenalkan konsep asas di sebalik setiap syarat. Untuk maklumat lebih lanjut, sila lawati artikel ini.

4.1. @ConditionalOnClass dan @ConditionalOnMissingClass

Dengan menggunakan syarat-syarat ini, Spring hanya akan menggunakan kacang konfigurasi automatik yang ditandakan jika kelas dalam argumen anotasi ada / tidak hadir :

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

4.2. @ConditionalOnBean dan @ConditionalOnMissingBean

Kami dapat menggunakan anotasi ini ketika kami ingin menentukan syarat berdasarkan kehadiran atau ketiadaan kacang tertentu :

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

4.3. @ConditionalOnProperty

Dengan penjelasan ini, kita dapat membuat syarat mengenai nilai sifat :

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

4.4. @ConditionalOnResource

Kita boleh membuat Spring menggunakan definisi hanya apabila sumber tertentu ada :

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

4.5. @ConditionalOnWebApplication dan @ConditionalOnNotWebApplication

Dengan anotasi ini, kita dapat membuat syarat berdasarkan pada apakah aplikasi saat ini adalah atau tidak aplikasi web :

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

4.6. @ConditionalExpression

Kita boleh menggunakan penjelasan ini dalam situasi yang lebih kompleks. Spring akan menggunakan definisi yang ditandai apabila ungkapan SpEL dinilai benar :

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

4.7. @ Bersyarat

Untuk keadaan yang lebih kompleks, kita dapat membuat kelas yang menilai keadaan khusus . Kami memberitahu Spring untuk menggunakan syarat khusus ini dengan @Conditional :

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

5. Kesimpulan

Dalam artikel ini, kami melihat gambaran umum tentang bagaimana kami dapat menyempurnakan proses konfigurasi automatik dan memberikan syarat untuk kacang konfigurasi automatik tersuai.

Seperti biasa, contohnya terdapat di GitHub.

Seterusnya » Anotasi Penjadualan Musim Semi « Anotasi Web Musim Semi Sebelumnya