Kommentarer om vårstøvler
• Nettnotater om våren
• Spring Boot Annotations (nåværende artikkel) • Spring Scheduling Annotations
• Vårdataanmerkninger
• Kommentarer om vårbønner
1. Oversikt
Spring Boot gjorde det enklere å konfigurere Spring med den automatiske konfigurasjonsfunksjonen.
I denne raske opplæringen vil vi utforske kommentarene fra org.springframework.boot.autoconfigure og org.springframework.boot.autoconfigure.condition pakker.
2. @SpringBootApplication
Vi bruker denne merknaden til merke hovedklassen til en Spring Boot-applikasjon:
@SpringBootApplication klasse VehicleFactoryApplication {public static void main (String [] args) {SpringApplication.run (VehicleFactoryApplication.class, args); }}
@SpringBootApplication innkapsler @Konfigurasjon, @EnableAutoConfiguration, og @ComponentScan merknader med standardattributtene.
3. @EnableAutoConfiguration
@EnableAutoConfiguration, som navnet sier, muliggjør automatisk konfigurasjon. Det betyr at Spring Boot ser etter autokonfigurasjonsbønner på klassestien og bruker dem automatisk.
Merk at vi må bruke denne merknaden med @Konfigurasjon:
@Configuration @EnableAutoConfiguration klasse VehicleFactoryConfig {}
4. Autokonfigurasjonsbetingelser
Vanligvis når vi skriver vår tilpassede autokonfigurasjoner, vi vil at våren skal bruk dem betinget. Vi kan oppnå dette med kommentarene i denne delen.
Vi kan plassere kommentarene i denne delen på @Konfigurasjon klasser eller @Bønne metoder.
I de neste avsnittene vil vi bare introdusere det grunnleggende konseptet bak hver tilstand. For mer informasjon, vennligst besøk denne artikkelen.
4.1. @ConditionalOnClass og @ConditionalOnMissingClass
Ved å bruke disse forholdene vil Spring bare bruke den merkede autokonfigurasjonsbønnen hvis klassen i kommentaren er argument er til stede / fraværende:
@Configuration @ConditionalOnClass (DataSource.class) klasse MySQLAutoconfiguration {// ...}
4.2. @ConditionalOnBean og @ConditionalOnMissingBean
Vi kan bruke disse merknadene når vi vil definere forhold basert på tilstedeværelse eller fravær av en bestemt bønne:
@Bean @ConditionalOnBean (name = "dataSource") LocalContainerEntityManagerFactoryBean entityManagerFactory () {// ...}
4.3. @ConditionalOnProperty
Med denne kommentaren kan vi gjøre betingelser på verdier av eiendommer:
@Bean @ConditionalOnProperty (name = "usemysql", havingValue = "local") DataSource dataSource () {// ...}
4.4. @ConditionalOnResource
Vi kan få våren til å bruke en definisjon bare når en spesifikk ressurs er til stede:
@ConditionalOnResource (resources = "classpath: mysql.properties") Egenskaper additionalProperties () {// ...}
4.5. @ConditionalOnWebApplication og @ConditionalOnNotWebApplication
Med disse kommentarene kan vi lage betingelser basert på om strømmen er applikasjonen er eller er ikke en webapplikasjon:
@ConditionalOnWebApplication HealthCheckController healthCheckController () {// ...}
4.6. @ConditionalExpression
Vi kan bruke denne merknaden i mer komplekse situasjoner. Våren vil bruke den markerte definisjonen når SpEL-uttrykk blir evaluert til sant:
@Bean @ConditionalOnExpression ("$ {usemysql} && $ {mysqlserver == 'local'}") DataSource dataSource () {// ...}
4.7. @Betinget
For enda mer komplekse forhold kan vi lage en klasse som vurderer tilpasset tilstand. Vi ber våren bruke denne egendefinerte tilstanden med @Betinget:
@Conditional (HibernateCondition.class) Egenskaper additionalProperties () {// ...}
5. Konklusjon
I denne artikkelen så vi en oversikt over hvordan vi kan finjustere autokonfigurasjonsprosessen og gi betingelser for tilpassede autokonfigurasjonsbønner.
Som vanlig er eksemplene tilgjengelige på GitHub.
Neste » Kommentarer om vårplanlegging « Forrige vårkommentarer om våren