日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot注解

發布時間:2024/2/28 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 簡介
    • @SpringBootApplication
    • @EnableAutoConfiguration
    • 條件自動配置
    • @ConditionalOnClass 和 @ConditionalOnMissingClass
    • @ConditionalOnProperty
    • @ConditionalOnResource
    • @ConditionalOnWebApplication 和 @ConditionalOnNotWebApplication
    • @ConditionalExpression
    • @Conditional

Spring Boot注解

簡介

Spring Boot通過自動配置讓我們更加簡單的使用Spring。在本文中我們將會介紹org.springframework.boot.autoconfigure 和org.springframework.boot.autoconfigure.condition 里面經常會用到的一些注解。

@SpringBootApplication

首先我們看一下@SpringBootApplication:

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

@SpringBootApplication被用在Spring Boot應用程序的Main class中,表示整個應用程序是Spring Boot。

@SpringBootApplication實際上是@Configuration, @EnableAutoConfiguration 和 @ComponentScan 的集合。

@EnableAutoConfiguration

@EnableAutoConfiguration 意味著開啟了自動配置。這意味著Spring Boot會去在classpath中查找自動配置的beans,并且自動應用他們。

注意, @EnableAutoConfiguration需要和@Configuration配合使用。

@Configuration @EnableAutoConfiguration public class VehicleFactoryConfig { }

條件自動配置

有時候,我們在自定義自動配置的時候,希望根據某些條件來開啟自動配置,Spring Boot 提供了一些有用的注解。

這些注解可以和@Configuration 類 或者 @Bean 方法一起使用。

@ConditionalOnClass 和 @ConditionalOnMissingClass

這兩個注解的意思是,如果注解參數中的類存在或者不存在則Spring會去實例化自動配置的bean。

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

@ConditionalOnBean 和 @ConditionalOnMissingBean

這兩個和上面的區別在于,這兩個是判斷是否有實例化的bean存在。

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

@ConditionalOnProperty

使用這個注解我們可以判斷Property的某些屬性是不是需要的值:

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

@ConditionalOnResource

只有當某些resource存在的時候,才會起作用。

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

@ConditionalOnWebApplication 和 @ConditionalOnNotWebApplication

這兩個注解通過判斷是否web應用程序。

@Bean@ConditionalOnWebApplicationHealthCheckController healthCheckController() {// ...return null;}

@ConditionalExpression

這個注解可以使用SpEL構造更加復雜的表達式:

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

@Conditional

還有一種更加復雜的應用叫@Conditional,它的參數是一個自定義的condition類。

@Bean@Conditional(HibernateCondition.class)Properties newAdditionalProperties() {//...return null;} public class HibernateCondition implements Condition {@Overridepublic boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {return false;} }

這個類需要實現matches方法。

本文的例子可以參考:https://github.com/ddean2009/learn-springboot2/tree/master/spring-boot-annotations

更多精彩內容且看:

  • 區塊鏈從入門到放棄系列教程-涵蓋密碼學,超級賬本,以太坊,Libra,比特幣等持續更新
  • Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續更新
  • Spring 5.X系列教程:滿足你對Spring5的一切想象-持續更新
  • java程序員從小工到專家成神之路(2020版)-持續更新中,附詳細文章教程

更多教程請參考 flydean的博客

總結

以上是生活随笔為你收集整理的Spring Boot注解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。