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

SpringBoot隨機(jī)數(shù)設(shè)置及參數(shù)間引用的操作步驟

 更新時(shí)間:2021年06月04日 11:26:16   作者:blayn  
在Spring Boot配置文件中設(shè)置屬性時(shí),除了可以像前面示例中顯示的配置屬性值外,還可以使用隨機(jī)值和參數(shù)間引用對(duì)屬性值進(jìn)行設(shè)置。下面給大家介紹SpringBoot參數(shù)間引用隨機(jī)數(shù)設(shè)置的操作步驟,感興趣的朋友一起看看吧

自定義配置

SpringBoot免除了項(xiàng)目中大部分手動(dòng)配置,可以說(shuō),幾乎所有的配置都可以寫(xiě)在全局配置文件application.peroperties中,SpringBoot會(huì)自動(dòng)加載全局配置文件從而免除我們手動(dòng)加載的煩惱。但是,如果我們自定義了配置文件,那么SpringBoot是無(wú)法識(shí)別這些配置文件的,此時(shí)需要我們手動(dòng)加載。

接下來(lái),將針對(duì)SpringBoot的自定義配置文件及其加載方式進(jìn)行講解。

(1)使用@PropertySource加載配置文件

我們可以使用@PropertySource注解結(jié)合@Configuration注解配置類(lèi)的方式來(lái)加載自定義配置文件,@PropertySource注解用于指定自定義配置文件的具體位置和名稱(chēng)。同時(shí),為了保證SpringBoot能夠掃描該注解,還需要在類(lèi)上添加@Configuration注解將實(shí)體類(lèi)作為自定義配置類(lèi)。

如果需要將自定義配置文件中的屬性值注入到對(duì)應(yīng)類(lèi)的屬性中,可以使用@ConfigurationProperties注解或者@Value注解進(jìn)行屬性值注入。

操作步驟:

1、在SpringBoot項(xiàng)目的resources目錄下新建一個(gè)名為test.properties的自定義配置文件,在該配置文件中編寫(xiě)需要設(shè)置的配置屬性:

# 對(duì)實(shí)體類(lèi)對(duì)象MyProperties進(jìn)行屬性配置
test.id=1
test.name=test

2、在com.hardy.springboot_demo.pojo包下新建一個(gè)配置類(lèi)MyProperties,提供test.properties自定義配置文件中對(duì)應(yīng)的屬性,并根據(jù)@PropertySource注解的使用進(jìn)行相關(guān)的配置:

package com.hardy.springboot_demo.pojo;

/**
 * @Author: HardyYao
 * @Date: 2021/5/31
 */

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration // 自定義配置類(lèi)
@PropertySource("classpath:test.properties") // 指定自定義配置文件的文件位置和文件名稱(chēng)
@EnableConfigurationProperties(MyProperties.class) // 開(kāi)啟對(duì)應(yīng)配置類(lèi)的屬性注入功能
@ConfigurationProperties(prefix = "test") // 指定配置文件注入屬性前綴
public class MyProperties {

    private int id;

    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "MyProperties{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

這里主要是新建一個(gè)自定義配置類(lèi),通過(guò)相關(guān)注解引入了自定義的配置文件,并完成了自定義屬性值的注入。

針對(duì)上述的幾個(gè)注解,進(jìn)行逐一講解:

  • @Configuration注解表示當(dāng)前類(lèi)是一個(gè)自定義配置類(lèi),并添加為Spring容器的組件,這里也可以使用傳統(tǒng)的@Component注解實(shí)現(xiàn)相同的功能;
  • @PropertySource("classpath:test.properties")注解指定了定義配置文件的文件位置和文件名稱(chēng),此處表示自定義配置文件為classpath類(lèi)路徑下的test.properties文件;
  • @ConfigurationProperties(prefix = "test")將上述自定義配置文件test.properties中以test開(kāi)頭的屬性值注入到該配置類(lèi)屬性中;
  • 如果配置類(lèi)上使用的是@Component注解而非@Configuration注解,那么@EnableConfigurationProperties注解還可以省略。

3、編寫(xiě)測(cè)試方法進(jìn)行測(cè)試:

@Autowired
private MyProperties myProperties;
@Test
void myPropertiesTest() {
    System.out.println(myProperties);
}

測(cè)試結(jié)果:

(2)使用@Configuration編寫(xiě)自定義配置類(lèi)

在SpringBoot框架中,推薦使用配置類(lèi)的方式向容器中添加和配置組件。

在SpringBoot框架中,通常使用@Configuration注解定義一個(gè)配置類(lèi),SpringBoot會(huì)自動(dòng)掃描和識(shí)別配置類(lèi),從而替換傳統(tǒng)Spring框架中的XML配置文件。

當(dāng)自定義一個(gè)配置類(lèi)后,還需要在類(lèi)中的方法上加上@Bean注解進(jìn)行組件配置,將方法的返回對(duì)象注入到Spring容器中,并且組件名稱(chēng)默認(rèn)使用的是方法名,當(dāng)然也可以使用@Bean注解的name或value屬性自定義組件的名稱(chēng)。

操作步驟:

1、在com.hardy.springboot_demo包下新建一個(gè)config包,并在該包下新建一個(gè)MyService類(lèi),該類(lèi)中不需要寫(xiě)任何代碼:

package com.hardy.springboot_demo.config;

/**
 * @Author: HardyYao
 * @Date: 2021/5/31
 */
public class MyService {
}

由于該類(lèi)目前沒(méi)有任何配置和注解,因此還無(wú)法正常被SpringBoot掃描和識(shí)別。

2、在config包下,新建一個(gè)MyConfig類(lèi),并使用@Configuration注解將該類(lèi)聲明為一個(gè)配置類(lèi),該類(lèi)的內(nèi)容如下:

package com.hardy.springboot_demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: HardyYao
 * @Date: 2021/5/31
 */
@Configuration // 定義該類(lèi)為一個(gè)配置類(lèi)
public class MyConfig {

    /**
     * 將返回值對(duì)象作為組件添加到Spring容器中,該組件id默認(rèn)為方法名
     * @return
     */
    @Bean
    public MyService myService(){
        return new MyService();
    }

}

MyConfig是@Configuration注解聲明的配置類(lèi)(類(lèi)似于聲明了一個(gè)XML配置文件),該配置類(lèi)會(huì)被SpringBoot自動(dòng)掃描識(shí)別。

使用@Bean注解的myService()方法,其返回值對(duì)象會(huì)作為組件添加到Spring容器中(類(lèi)似于XML配置文件中的標(biāo)簽配置),并且該組件id默認(rèn)為方法名myService。

3、編寫(xiě)測(cè)試方法進(jìn)行測(cè)試

@Autowired
private ApplicationContext applicationContext;
    
@Test
void iocTest() {
    System.out.println(applicationContext.containsBean("myService"));
}

上述代碼中,先通過(guò)@Autowired注解注入Spring容器示例ApplicationContext,然后在測(cè)試方法iocTest()中測(cè)試查看該容器中是否包含id為myService的組件。

執(zhí)行測(cè)試方法iocTest(),運(yùn)行結(jié)果如下:

從測(cè)試結(jié)果可以看出,測(cè)試方法iocTest()運(yùn)行成功,顯示運(yùn)行結(jié)果為true,表示Spirng的IOC容器中也包含了id為myService的實(shí)例對(duì)象組件,說(shuō)明使用自定義配置類(lèi)的形式完成了向Spring容器進(jìn)行組件的添加和配置。

隨機(jī)數(shù)設(shè)置及參數(shù)間引用

在SpringBoot配置文件中設(shè)置屬性時(shí),除了可以像前面示例中顯示的配置屬性值外,還可以使用隨機(jī)值和參數(shù)間引用對(duì)屬性值進(jìn)行設(shè)置。下面,針對(duì)配置文件中這兩種屬性值的設(shè)置方式進(jìn)行講解。

隨機(jī)值設(shè)置

在SpringBoot配置文件中,隨機(jī)值設(shè)置使用到了SpringBoot內(nèi)嵌的RandomValuePropertySource類(lèi),對(duì)一些隱秘屬性值或者測(cè)試用例屬性值進(jìn)行隨機(jī)值注入。

隨機(jī)值設(shè)置的語(yǔ)法格式為${random.xx},xx表示需要制定生成的隨機(jī)數(shù)類(lèi)型和范圍,它可以生成隨機(jī)的整數(shù)、uuid或字符串,示例代碼如下:

my.secret=${random.value} // 配置隨機(jī)值
my.number=${random.int} // 配置隨機(jī)整數(shù)
my.bignumber=${random.long} // 配置隨機(jī)long類(lèi)型數(shù)
my.uuid=${random.uuid} // 配置隨機(jī)uuid類(lèi)型數(shù)
my.number.less.than.ten=${random.int(10)} // 配置小于10的隨機(jī)整數(shù)
my.number.in.range=${random.int[1024,65536]} // 配置范圍在[1024,65536]之間的隨機(jī)整數(shù)

上述代碼中,使用RandomValuePropertySource類(lèi)中random提供的隨機(jī)數(shù)類(lèi)型,分別展示了不同類(lèi)型隨機(jī)值的設(shè)置示例。

參數(shù)間引用

在SpringBoot配置文件中,配置文件的屬性值還可以進(jìn)行參數(shù)間的引用,也就是在后一個(gè)配置的屬性值中直接引用先前定義過(guò)的屬性,這樣就可以直接解析其中的屬性值了。

使用參數(shù)間引用的好處就是,在多個(gè)具有相互關(guān)聯(lián)的配置屬性中,只需要對(duì)其中一處屬性進(jìn)行預(yù)先配置,那么其他地方都可以引用,省去了后續(xù)多處修改的麻煩。

參數(shù)間引用的語(yǔ)法格式為${xx},xx表示先前在配置文件中已經(jīng)配置過(guò)的屬性名,示例代碼如下:

app.name=MyApp
app.description=${app.name} is a Spring Boot application

上述參數(shù)間引用設(shè)置示例中,先設(shè)置了“app.name=MyApp”,將app.name屬性的屬性值設(shè)置為了MyApp;接著,在app.description屬性配置中,使用${app.name}對(duì)前一個(gè)屬性進(jìn)行了引用。

接下來(lái),通過(guò)一個(gè)案例來(lái)演示使用隨機(jī)值設(shè)置以及參數(shù)間引用的方式進(jìn)行屬性設(shè)置的具體使用和效果,具體步驟如下:

1、打開(kāi)全局配置文件application.properties,在該配置文件中分別通過(guò)隨機(jī)值設(shè)置和參數(shù)間引用來(lái)配置兩個(gè)屬性,示例代碼如下:

# 隨機(jī)值設(shè)置以及參數(shù)間引用配置
hardy.age=${random.int[20,30]}
hardy.description=hardy的年齡可能是${hardy.age}

在上述application.properties配置文件中,先使用隨機(jī)數(shù)設(shè)置了hardy.age的屬性值,該屬性值的取值范圍在[10,20]之間,隨后使用參數(shù)間引用配置了hardy.description屬性。

2、在項(xiàng)目的測(cè)試類(lèi)中添加description屬性,并將配置文件中hardy.description的屬性進(jìn)行注入,然后新增一個(gè)測(cè)試方法進(jìn)行測(cè)試,測(cè)試代碼如下:

@Value("${hardy.description}")
private String description;

@Test
void placeholderTest() {
    System.out.println(description);
}

在上述代碼中,通過(guò)@Value("${hardy.description}")注解將配置文件中的hardy.description屬性值注入到了對(duì)應(yīng)的description屬性中,在測(cè)試方法placeholderTest()中對(duì)該屬性值進(jìn)行了輸出打印。

執(zhí)行測(cè)試方法后,控制臺(tái)輸出結(jié)果如下所示:

可以看到,測(cè)試方法placeholderTest()成功打印出了description屬性的注入內(nèi)容(age的取值始終在[20,30]之間隨機(jī)顯示),該內(nèi)容與配置文件中配置的屬性值保持一致。

以上就是SpringBoot隨機(jī)數(shù)設(shè)置及參數(shù)間引用的配置方法的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot參數(shù)間引用隨機(jī)數(shù)設(shè)置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐

    Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐

    在實(shí)際項(xiàng)目中由于服務(wù)器內(nèi)存有限,人工清理常會(huì)忘記,本文主要介紹了Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Java 超詳細(xì)講解IO操作字節(jié)流與字符流

    Java 超詳細(xì)講解IO操作字節(jié)流與字符流

    本章具體介紹了字節(jié)流、字符流的基本使用方法,圖解穿插代碼實(shí)現(xiàn)。 JAVA從基礎(chǔ)開(kāi)始講,后續(xù)會(huì)講到JAVA高級(jí),中間會(huì)穿插面試題和項(xiàng)目實(shí)戰(zhàn),希望能給大家?guī)?lái)幫助
    2022-03-03
  • Java中的BufferedInputStream與BufferedOutputStream使用示例

    Java中的BufferedInputStream與BufferedOutputStream使用示例

    BufferedInputStream和BufferedOutputStream分別繼承于FilterInputStream和FilterOutputStream,代表著緩沖區(qū)的輸入輸出,這里我們就來(lái)看一下Java中的BufferedInputStream與BufferedOutputStream使用示例:
    2016-06-06
  • SpringBoot配置全局異常處理器捕獲異常詳解

    SpringBoot配置全局異常處理器捕獲異常詳解

    spring-boot統(tǒng)一異常捕獲,異常時(shí)相對(duì)于return的一種退出機(jī)制,可以由系統(tǒng)觸發(fā),下面這篇文章主要給大家介紹了關(guān)于SpringBoot配置全局異常處理器捕獲異常的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java中的LinkedHashMap及LRU緩存機(jī)制詳解

    Java中的LinkedHashMap及LRU緩存機(jī)制詳解

    這篇文章主要介紹了Java中的LinkedHashMap及LRU緩存機(jī)制詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護(hù)了一個(gè)Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下
    2023-09-09
  • SpringBoot測(cè)試WebMVC的4種實(shí)現(xiàn)方案

    SpringBoot測(cè)試WebMVC的4種實(shí)現(xiàn)方案

    在項(xiàng)目開(kāi)發(fā)中,測(cè)試是確保應(yīng)用質(zhì)量的關(guān)鍵環(huán)節(jié),對(duì)于基于SpringBoot構(gòu)建的Web應(yīng)用,高效測(cè)試MVC層可以極大提高開(kāi)發(fā)及聯(lián)調(diào)效率,下面我們來(lái)看看SpringBoot中測(cè)試WebMVC的4種實(shí)現(xiàn)方案吧
    2025-04-04
  • 解決IntelliJ IDEA創(chuàng)建spring boot無(wú)法連接http://start.spring.io/問(wèn)題

    解決IntelliJ IDEA創(chuàng)建spring boot無(wú)法連接http://start.spring.io/問(wèn)題

    這篇文章主要介紹了解決IntelliJ IDEA創(chuàng)建spring boot無(wú)法連接http://start.spring.io/問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • springboot+vue項(xiàng)目從第一行代碼到上線部署全流程

    springboot+vue項(xiàng)目從第一行代碼到上線部署全流程

    本文詳細(xì)介紹了如何從零開(kāi)始搭建一個(gè)基于Spring Boot和Vue.js的前后端分離項(xiàng)目,并涵蓋項(xiàng)目需求分析、技術(shù)選型、項(xiàng)目結(jié)構(gòu)設(shè)計(jì)、前后端交互、部署上線等全過(guò)程,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • SpringBoot利用Validation包實(shí)現(xiàn)高效參數(shù)校驗(yàn)

    SpringBoot利用Validation包實(shí)現(xiàn)高效參數(shù)校驗(yàn)

    如果不進(jìn)行校驗(yàn)就直接使用這些數(shù)據(jù),可能會(huì)導(dǎo)致各種問(wèn)題,那么SpringBoot如何利用Validation包實(shí)現(xiàn)高效參數(shù)校驗(yàn)?zāi)?下面讓我們一起來(lái)探討這個(gè)重要的話題吧
    2025-04-04
  • java實(shí)現(xiàn)任意矩陣Strassen算法

    java實(shí)現(xiàn)任意矩陣Strassen算法

    這篇文章主要介紹了java實(shí)現(xiàn)任意矩陣Strassen算法的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評(píng)論

临湘市| 建瓯市| 磴口县| 海安县| 台北市| 嘉善县| 五台县| 淅川县| 西乌| 中卫市| 湘阴县| 弥渡县| 塔河县| 宾阳县| 根河市| 呼伦贝尔市| 石泉县| 郎溪县| 策勒县| 福安市| 华安县| 五大连池市| 西丰县| 苏尼特左旗| 丰县| 嫩江县| 濮阳县| 萨迦县| 宕昌县| 巴里| 五大连池市| 义乌市| 崇文区| 安图县| 泰来县| 抚远县| 同心县| 南投县| 德令哈市| 门头沟区| 昌宁县|