0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

容器配置及Spring Boot注解

jf_78858299 ? 來源:ramostear.com ? 作者:ramostear.com ? 2023-04-07 11:45 ? 次閱讀

@Autowired

@Autowired注解用于標記Spring將要解析和注入的依賴項。此注解可以作用在構造函數、字段和setter方法上。

作用于構造函數

下面是@Autowired注解標注構造函數的使用示例:

作用于setter方法

下面是@Autowired注解標注setter方法的示例代碼:

作用于字段

@Autowired注解標注字段是最簡單的,只需要在對應的字段上加入此注解即可,示例代碼如下:

###@Primary

當系統(tǒng)中需要配置多個具有相同類型的bean時,@Primary可以定義這些Bean的優(yōu)先級。下面將給出一個實例代碼來說明這一特性:

輸出結果:

this is send DingDing method message.

@PostConstruct與@PreDestroy

值得注意的是,這兩個注解不屬于Spring,它們是源于JSR-250中的兩個注解,位于common-annotations.jar中。@PostConstruct注解用于標注在Bean被Spring初始化之前需要執(zhí)行的方法。@PreDestroy注解用于標注Bean被銷毀前需要執(zhí)行的方法。下面是具體的示例代碼:

@Qualifier

當系統(tǒng)中存在同一類型的多個Bean時,@Autowired在進行依賴注入的時候就不知道該選擇哪一個實現類進行注入。此時,我們可以使用@Qualifier注解來微調,幫助@Autowired選擇正確的依賴項。下面是一個關于此注解的代碼示例:

@SpringBootApplication

@SpringBootApplication注解是一個快捷的配置注解,在被它標注的類中,可以定義一個或多個Bean,并自動觸發(fā)自動配置Bean和自動掃描組件。此注解相當于@Configuration、@EnableAutoConfiguration@ComponentScan的組合。

在Spring Boot應用程序的主類中,就使用了此注解。示例代碼如下:

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

@EnableAutoConfiguration

@EnableAutoConfiguration注解用于通知Spring,根據當前類路徑下引入的依賴包,自動配置與這些依賴包相關的配置項。

@ConditionalOnClass與@ConditionalOnMissingClass

這兩個注解屬于類條件注解,它們根據是否存在某個類作為判斷依據來決定是否要執(zhí)行某些配置。下面是一個簡單的示例代碼:

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

@ConditionalOnBean與@ConditionalOnMissingBean

這兩個注解屬于對象條件注解,根據是否存在某個對象作為依據來決定是否要執(zhí)行某些配置方法。示例代碼如下:

@Bean
@ConditionalOnBean(name="dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory(){
        //...
        }
@Bean
@ConditionalOnMissingBean
public MyBean myBean(){
        //...
        }

@ConditionalOnProperty

@ConditionalOnProperty注解會根據Spring配置文件中的配置項是否滿足配置要求,從而決定是否要執(zhí)行被其標注的方法。示例代碼如下:

@Bean
@ConditionalOnProperty(name="alipay",havingValue="on")
Alipay alipay(){
        return new Alipay();
        }

@ConditionalOnResource

此注解用于檢測當某個配置文件存在使,則觸發(fā)被其標注的方法,下面是使用此注解的代碼示例:

@ConditionalOnResource(resources = "classpath:website.properties")
Properties addWebsiteProperties(){
        //...
        }

@ConditionalOnWebApplication與@ConditionalOnNotWebApplication

這兩個注解用于判斷當前的應用程序是否是Web應用程序。如果當前應用是Web應用程序,則使用Spring WebApplicationContext,并定義其會話的生命周期。下面是一個簡單的示例:

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

@ConditionalExpression

此注解可以讓我們控制更細粒度的基于表達式的配置條件限制。當表達式滿足某個條件或者表達式為真的時候,將會執(zhí)行被此注解標注的方法。

@Bean
@ConditionalException("${localstore} && ${local == 'true'}")
LocalFileStore store(){
        //...
        }

@Conditional

@Conditional注解可以控制更為復雜的配置條件。在Spring內置的條件控制注解不滿足應用需求的時候,可以使用此注解定義自定義的控制條件,以達到自定義的要求。下面是使用該注解的簡單示例:

@Conditioanl(CustomConditioanl.class)
CustomProperties addCustomProperties(){
        //...
        }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62629
  • 容器
    +關注

    關注

    0

    文章

    495

    瀏覽量

    22062
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14344
收藏 人收藏

    評論

    相關推薦

    Spring Boot如何實現異步任務

    Spring Boot 提供了多種方式來實現異步任務,這里介紹三種主要實現方式。 1、基于注解 @Async @Async 注解Spring
    的頭像 發(fā)表于 09-30 10:32 ?1441次閱讀

    啟動Spring Boot項目應用的三種方法

    文件的讀取,開啟注解4)配置日志文件...配置完成之后部署tomcat 調試。但是如果使用spring boot呢?很簡單,我僅僅只需要非常
    發(fā)表于 01-14 17:33

    談一談Spring Boot嵌入式Web容器

    Spring Boot嵌入式Web容器Embedded Tomcatorg.springframework.boot.context.embedded.EmbeddedServletConta
    發(fā)表于 12-16 08:16

    Spring Boot嵌入式Web容器原理是什么

    Spring Boot嵌入式Web容器原理Spring Boot的目標是構建“非常容易創(chuàng)建、獨立、產品級別的基于
    發(fā)表于 12-16 07:57

    Spring應用 1 springXML配置說明

    Spring應用 1 springXML配置說明 隱式對Spring容器注冊Process ? context:annotation-config / 為了在
    發(fā)表于 01-13 12:20 ?389次閱讀

    簡述Spring Boot數據校驗

    上一篇文章我們了解了Spring Boot Web相關的知識,初步了解了spring-boot-starter-web,還了解了@Contrler和@RestController的差別,如果
    的頭像 發(fā)表于 03-17 15:07 ?781次閱讀

    Spring Web MVC注解

    RequestMapping注解的主要用途是將Web請求與請求處理類中的方法進行映射。Spring MVC和Spring WebFlux都通過`RquestMappingHandlerMapping`和`RequestMappi
    的頭像 發(fā)表于 04-07 11:32 ?601次閱讀
    <b class='flag-5'>Spring</b> Web MVC<b class='flag-5'>注解</b>

    Spring Dependency Inject與Bean Scops注解

    DependsOn`注解可以配置Spring IoC容器在初始化一個Bean之前,先初始化其他的Bean對象。下面是此注解使用示例代碼:
    的頭像 發(fā)表于 04-07 11:35 ?696次閱讀
    <b class='flag-5'>Spring</b> Dependency Inject與Bean Scops<b class='flag-5'>注解</b>

    Spring Boot配置加載相關知識

    Spring BOOT 啟動參數 在Java Web的開發(fā)完成后,以前我們都會打包成war文件,然后放大web容器,比如tomcat、jetty這樣的容器?,F在基于SpringBoot
    的頭像 發(fā)表于 10-07 15:47 ?490次閱讀

    Spring Boot Actuator快速入門

    一下 Spring Boot Actuator ,學習如何在 Spring Boot 2.x 中使用、配置和擴展這個監(jiān)控工具。
    的頭像 發(fā)表于 10-09 17:11 ?640次閱讀

    Spring Boot啟動 Eureka流程

    Spring Boot 啟動 eureka 的關鍵注解就在 @EnableEurekaServer 上面。 @Target ({ElementType.TYPE}) @Retention
    的頭像 發(fā)表于 10-10 11:40 ?894次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動 Eureka流程

    Spring Boot的啟動原理

    spring-boot-maven-plugin 的 maven 項目打包插件,可以方便的將 Spring Boot 項目打成 jar 包。這樣我們就不再需要部署 Tomcat 、Jetty等之類的 Web 服務器
    的頭像 發(fā)表于 10-13 11:44 ?652次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動原理

    Spring Boot 的設計目標

    Spring 框架復雜的XML配置。使用 Spring Boot 可以很容易創(chuàng)建一個獨立運行的、基于 Spring 的生產級應用程序,而且
    的頭像 發(fā)表于 10-13 14:56 ?588次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設計目標

    springboot核心注解

    Spring Boot 是基于 Spring 框架的開源框架,它可以幫助開發(fā)者快速構建、部署和運行獨立的、生產級的 Spring 應用程序。Spri
    的頭像 發(fā)表于 11-23 09:23 ?527次閱讀

    SpringBoot核心注解由幾個注解組成

    Spring Boot 是一個開源的 JavaEE 開發(fā)框架,它以簡化 Spring 框架的配置與開發(fā)為目標,旨在讓開發(fā)者能快速構建獨立、生產級別的應用程序。
    的頭像 發(fā)表于 12-03 15:09 ?762次閱讀