最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章輕松了解SpringBoot配置高級

 更新時間:2022年11月08日 10:09:15   作者:己不由心王道長  
大家都知道SpringBoot擁有良好的基因,還能簡化編碼、配置、部署、監(jiān)控,也是現(xiàn)在面試必問的一個點,下面這篇文章主要給大家介紹了如何通過一篇文章輕松了解SpringBoot配置高級的相關資料,需要的朋友可以參考下

前言

本文介紹的是SpringBoot配置高級部分,課程是跟著黑馬走的,所以會有一些借鑒,當然也是筆記,還會參考一些大佬的分享;這里的SpringBoot配置高級,并不是SpringBoot所有的高級配置;SpringBoot體系(或者說Spring)是十分龐大的,筆者也自知不能窮盡,故而只能把所學的東西拿來記一記,練一練。文章內(nèi)容如若有誤,還請大家批評指正。

@ConfigurationProperties

@ConfigurationProperties告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定;要進行綁定,首先這個類要受Spring管理,spring才能操作里面的數(shù)據(jù)。

使用場景

場景一:使用@ConfigurationProperties和@Component注解到bean定義類上.

注意,這里是到bean定義類上,這里的bean指的是受Spring管理的bean,而@Component注解就是把一個類當成一個bean注冊到Spring容器中。

自定義一個配置文件:

book:
  bookName: Spring技術內(nèi)幕
  price: 36.57

定義一個bean:

package com.example.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

package com.example.entity;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author 不止于夢想
 * @date 2022/11/7 18:50
 */
@Component//交給Spring容器管理
@ConfigurationProperties(prefix = "book")//加載配置文件,配置前綴表達式
@Data
public class Book {
    //書名
    private String bookName;
    //價格
    private double price;
}

注意看,此時是有@Component注解的,說明這個bean受Spring容器管理。

測試:

package com.example.springbootconfigureadvanced;

import com.example.entity.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringBootConfigureAdvancedApplicationTests {
    @Autowired
    Book book;
    @Test
    void contextLoads() {
    }
    @Test
    public void toTest(){
        System.out.println(book.getPrice());
    }
}

結(jié)果:

此時如果把@component去掉:

直接爆紅了,語法都不給你通過,這說明了要@ConfigurationProperties生效,被注入的bean應該要受Spring管理或者說在Spring容器中。

場景二:使用@ConfigurationProperties和@Bean注解在配置類的Bean定義方法上

解釋一下:如果我們使用注解開發(fā),一般會把第三方技術寫成一個配置類,然后使用@ConfigurationProperties和@Bean注解對其進行注入,從而實現(xiàn)對第三方屬性的綁定。

注意這里的兩個注解使用在方法上,但是要綁定,這個類必須得讓Spring管理,所以需要一個注解來顯示這個類,讓Spring能夠掃描到,以便與可以把其添加到容器中。

新建一個配置類:

package com.example.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 不止于夢想
 * @date 2022/11/7 19:51
 */
@Configuration//聲明一個類為配置類,用于取代bean.xml配置文件注冊bean對象。
public class MyConfig {

    @ConfigurationProperties(prefix = "datasource")
    @Bean
    public DruidDataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

添加配置:

dataSource:
  url: jdbc:mysql://127.0.0.1:3306/springBoot?serverTimezone=UTC

注意這里并沒有用spring.dataSource格式,如果是那樣,倒不如直接在配置文件配好,瞎整配置類干啥。

測試:

package com.example;

import com.alibaba.druid.pool.DruidDataSource;
import com.example.entity.Book;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class SpringBootConfigureAdvancedApplication {

    public static void main(String[] args) {
        //獲取應用上下文配置
        ConfigurableApplicationContext context = SpringApplication.run(
                SpringBootConfigureAdvancedApplication.class, args);
        DruidDataSource dataSource = context.getBean(DruidDataSource.class);
        System.out.println(dataSource.getUrl());
    }
}

這里我們直接在SpringBoot應用類獲取應用上下文配置即可獲取容器中的bean,不用再費勁去測試類整一堆東西;

驗證:

解釋一下,不然不清楚:在上面配置類MyConfig中設置了一個方法,返回值就是數(shù)據(jù)源對象,就是說使用方法創(chuàng)建了數(shù)據(jù)源對象,然后使用@Bean把這個方法定義為一個受Spring管理的bean,再使用@ConfigurationProperties(prefix = “datasource”)加載配置文件進入數(shù)據(jù)源對象,但是這樣還不夠,這個類Spring并不能掃描到,所以使用@Configuration把這個類定義為配置類,這樣就可以加載這個類。

在這里沒有的配置文件中的dataSource只是一個普通的配置。

場景三:使用@ConfigurationProperties注解到普通類,然后再通過@EnableConfigurationProperties定義為Bean。

先說一下@EnableConfigurationProperties的用法:這個注解相當于一個開關,用來開啟配置的綁定,使用這個注解,不用把類手動交給Spring加載成bean,直接在這個注解后面加上你要開啟配置的類的類名.class即可,這個注解會告訴Spring把類加載成bean,并放入容器中。

說白了就是讓@ConfigurationProperties生效。

還是上面的例子:

沒加@EnableConfigurationProperties、也沒有加其他制成bean的注解:

加上@EnableConfigurationProperties

測試:

小結(jié)

1、注意三種使用情況,特別是第三種,在后面的原理篇會大量出現(xiàn)

2、@EnableConfigurationProperties是一個開關,用來開啟被@ConfigurationProperties注解注釋而沒有其他生成bean注解的類與配置文件注入的開關。

寬松綁定/松散綁定

@ConfigurationProperties綁定屬性支持屬性名寬松綁定

總的概況就是,只要配置文件的配置的字母數(shù)量和字母與被綁定的bean的prefix(前綴)相同都可以綁定,但是注意,prefix的內(nèi)容全部為小寫。配置文件可以出現(xiàn)大小寫不一致,甚至可以出現(xiàn)各種符號(非abcd這些)。

綁定前綴名命名規(guī)范:僅能使用純小寫字母、數(shù)字、下劃線作為合法的字符

舉例:配置文件

dataSource:
  url: jdbc:mysql://127.0.0.1:3306/springBoot?serverTimezone=UTC

類中:

可以看到,雖然這里的前綴和配置文件完全相同,但是還是不正確的,prefix必須全為小寫。

說完了嗎?說完了,其他的試一下就可以,一通百通。

啊,還有就是:

寬松綁定不支持注解@Value引用單個屬性的方式

總結(jié)

到此這篇關于SpringBoot配置高級的文章就介紹到這了,更多相關SpringBoot配置高級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 測試springboot項目出現(xiàn)Test Ignored的解決

    測試springboot項目出現(xiàn)Test Ignored的解決

    這篇文章主要介紹了測試springboot項目出現(xiàn)Test Ignored的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 關于gradle多模塊項目依賴管理方式

    關于gradle多模塊項目依賴管理方式

    這篇文章主要介紹了關于gradle多模塊項目依賴管理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java有界類型參數(shù)的實例用法

    java有界類型參數(shù)的實例用法

    小編給大家整理了一篇關于java有界類型參數(shù)的使用的相關文章及擴展實例內(nèi)容,有需要的朋友們可以學習參考下。
    2021-07-07
  • 深入Synchronized和java.util.concurrent.locks.Lock的區(qū)別詳解

    深入Synchronized和java.util.concurrent.locks.Lock的區(qū)別詳解

    本篇文章是對Synchronized和java.util.concurrent.locks.Lock的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • 詳解Spark?Sql在UDF中如何引用外部數(shù)據(jù)

    詳解Spark?Sql在UDF中如何引用外部數(shù)據(jù)

    這篇文章主要為大家介紹了詳解Spark?Sql在UDF中如何引用外部數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • java發(fā)送email一般步驟(實例講解)

    java發(fā)送email一般步驟(實例講解)

    下面小編就為大家?guī)硪黄猨ava發(fā)送email一般步驟(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • IntelliJ IDEA 報錯:找不到包或者找不到符號的問題及解決方案

    IntelliJ IDEA 報錯:找不到包或者找不到符號的問題及解決方案

    這篇文章主要介紹了IntelliJ IDEA 報錯:找不到包或者找不到符號的問題及解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot封裝響應處理超詳細講解

    SpringBoot封裝響應處理超詳細講解

    這篇文章主要介紹了SpringBoot封裝響應處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-12-12
  • SpringBoot發(fā)送短信驗證碼的實例

    SpringBoot發(fā)送短信驗證碼的實例

    第三方短信發(fā)送平臺有很多種,各個平臺有各自的優(yōu)缺點,在選擇的時候可以根據(jù)自己的具體實際情況定奪,本文主要介紹了SpringBoot發(fā)送短信驗證碼的實例,感興趣的可以了解一下
    2022-02-02
  • Java使用JSONPath解析JSON完整內(nèi)容詳解

    Java使用JSONPath解析JSON完整內(nèi)容詳解

    這篇文章主要介紹了Java使用JSONPath解析JSON完整內(nèi)容詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論

濉溪县| 贵州省| 彰武县| 贵阳市| 英德市| 正阳县| 迁西县| 大邑县| 克什克腾旗| 周至县| 柘城县| 乌鲁木齐市| 万全县| 得荣县| 怀仁县| 滕州市| 唐海县| 周口市| 和硕县| 谷城县| 仁布县| 临安市| 灌阳县| 桑日县| 浑源县| 襄汾县| 德清县| 乐安县| 北碚区| 安岳县| 建水县| 张北县| 吉安县| 旺苍县| 黔东| 康保县| 浏阳市| 新宁县| 绿春县| 巫山县| 浦北县|