欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章輕松了解SpringBoot配置高級(jí)

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

前言

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

@ConfigurationProperties

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

使用場(chǎng)景

場(chǎng)景一:使用@ConfigurationProperties和@Component注解到bean定義類上.

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

自定義一個(gè)配置文件:

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

定義一個(gè)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 不止于夢(mèng)想
 * @date 2022/11/7 18:50
 */
@Component//交給Spring容器管理
@ConfigurationProperties(prefix = "book")//加載配置文件,配置前綴表達(dá)式
@Data
public class Book {
    //書名
    private String bookName;
    //價(jià)格
    private double price;
}

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

測(cè)試:

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é)果:

此時(shí)如果把@component去掉:

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

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

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

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

新建一個(gè)配置類:

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 不止于夢(mèng)想
 * @date 2022/11/7 19:51
 */
@Configuration//聲明一個(gè)類為配置類,用于取代bean.xml配置文件注冊(cè)bean對(duì)象。
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格式,如果是那樣,倒不如直接在配置文件配好,瞎整配置類干啥。

測(cè)試:

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) {
        //獲取應(yīng)用上下文配置
        ConfigurableApplicationContext context = SpringApplication.run(
                SpringBootConfigureAdvancedApplication.class, args);
        DruidDataSource dataSource = context.getBean(DruidDataSource.class);
        System.out.println(dataSource.getUrl());
    }
}

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

驗(yàn)證:

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

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

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

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

說白了就是讓@ConfigurationProperties生效。

還是上面的例子:

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

加上@EnableConfigurationProperties

測(cè)試:

小結(jié)

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

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

寬松綁定/松散綁定

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

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

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

舉例:配置文件

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

類中:

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

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

啊,還有就是:

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

總結(jié)

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

相關(guān)文章

  • 完整的醫(yī)院就診掛號(hào)系統(tǒng)基于Spring MVC + Spring + MyBatis實(shí)現(xiàn)

    完整的醫(yī)院就診掛號(hào)系統(tǒng)基于Spring MVC + Spring + MyBatis實(shí)現(xiàn)

    這篇文章主要介紹了基于Spring MVC + Spring + MyBatis實(shí)現(xiàn)的醫(yī)院就診掛號(hào)系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java基礎(chǔ)類之ArrayUtils工具類詳解

    Java基礎(chǔ)類之ArrayUtils工具類詳解

    這篇文章主要介紹了java.ArrayDeque類使用方法,java.ArrayDeque類提供了可調(diào)整大小的陣列,并實(shí)現(xiàn)了Deque接口,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 在springboot中添加mvc功能的正確姿勢(shì)講解

    在springboot中添加mvc功能的正確姿勢(shì)講解

    這篇文章主要介紹了在springboot中添加mvc功能的正確姿勢(shì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java?JDK的多版本共存實(shí)現(xiàn)方法

    Java?JDK的多版本共存實(shí)現(xiàn)方法

    有時(shí)候系統(tǒng)中需要多個(gè)jdk版本共存,我們?cè)谧鎏囟ǖ牟僮鲿r(shí)需要特定的版本,這篇文章主要給大家介紹了關(guān)于Java?JDK的多版本共存實(shí)現(xiàn)?的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • SpringBoot CommandLineRunner的異步任務(wù)機(jī)制使用

    SpringBoot CommandLineRunner的異步任務(wù)機(jī)制使用

    這篇文章主要介紹了SpringBoot CommandLineRunner的異步任務(wù)機(jī)制使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java面試必備之ArrayList陷阱解析

    Java面試必備之ArrayList陷阱解析

    昨天小楓接到了一個(gè)公司的面試電話,其中一道面試題覺得有點(diǎn)意思,在這里和大家一起分享下。面試題是ArrayList如何刪除指定元素。乍聽很簡(jiǎn)單的問題,但是如果沒有實(shí)際踩過坑很容易掉進(jìn)面試官的陷阱中,我們一起來分析下吧
    2022-02-02
  • Java 獲取當(dāng)前時(shí)間及實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)功能【推薦】

    Java 獲取當(dāng)前時(shí)間及實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)功能【推薦】

    這篇文章主要介紹了Java 獲取當(dāng)前時(shí)間及實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)功能 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • SpringBoot 項(xiàng)目添加 MDC 日志鏈路追蹤的執(zhí)行流程

    SpringBoot 項(xiàng)目添加 MDC 日志鏈路追蹤的執(zhí)行流程

    日志鏈路追蹤就是將一個(gè)標(biāo)志跨線程進(jìn)行傳遞,在一般的小項(xiàng)目中也就是在你新起一個(gè)線程的時(shí)候,或者使用線程池執(zhí)行任務(wù)的時(shí)候會(huì)用到,比如追蹤一個(gè)用戶請(qǐng)求的完整執(zhí)行流程,本文給大家介紹SpringBoot MDC 日志鏈路追蹤的代碼,感興趣的朋友一起看看吧
    2021-06-06
  • java實(shí)現(xiàn)二維碼生成功能詳細(xì)示例

    java實(shí)現(xiàn)二維碼生成功能詳細(xì)示例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)二維碼生成功能的相關(guān)資料,隨著信息化時(shí)代的到來,二維碼作為一種信息傳遞的工具,越來越受到人們的歡迎,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java Swing最詳細(xì)基礎(chǔ)知識(shí)總結(jié)

    Java Swing最詳細(xì)基礎(chǔ)知識(shí)總結(jié)

    這篇文章主要介紹了Java Swing最詳細(xì)基礎(chǔ)知識(shí)總結(jié),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java Swing的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論