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

SpringBoot屬性注入的多種方式實(shí)例

 更新時間:2021年10月30日 08:47:38   作者:NicholasGUB  
在 SpringBoot中,提供了一種新的屬性注入方式,支持各種java基本數(shù)據(jù)類型及復(fù)雜類型的注入,下面這篇文章主要給大家介紹了關(guān)于SpringBoot屬性注入的多種方式,需要的朋友可以參考下

一、@Value注解注入屬性

SpringBoot默認(rèn)可以將application.properties文件或application.yml文件中定義的屬性值注入到j(luò)ava類中,這種注入實(shí)際上是通過java類屬性的setter方法進(jìn)行的。

例:將application.yml中的以下屬性注入到類中:

## 自定義屬性
petshop:
  name: 睿芽寵物
  introduce: 種類齊全,安全可靠
  licences: 1、上市許可證,2、疫苗許可證
  infos: "{'phone':'36xx102','address':'xx省xx市'}"

使用@Value注解可以將application.yml中的屬性注入,@Value注解使用${屬性名}的方式來聲明要注入的屬性,如果要注入的屬性為Map集合,則需要結(jié)合Spel表達(dá)式進(jìn)行處理。

package com.it.action;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/source")
public class SourceAction {
    @Value("${petshop.name}")
    private String name;
    @Value("${petshop.introduce}")
    private String introduce;
    @Value("${petshop.licences}")
    private List<String> licences;
    @Value("#{${petshop.infos}}")
    private Map<String, String> infos;

    @RequestMapping("/show")
    public Object show() {
        Map<String, Object> map = new LinkedHashMap();
        map.put("name", name);
        map.put("introduce", introduce);
        map.put("licences", licences);
        map.put("infos", infos);
        return map;
    }
}

訪問http://localhost:8080/source/show觀察被注入的屬性:

二、@ConfigurationProperties注解批量注入屬性

@ConfigurationProperties注解用于注入有著相同前綴的屬性,注入的方式也是通過java類的setter方法來完成,但是這種方式缺少了@Value注解的靈活性,也無法結(jié)合spel語言進(jìn)行處理。

例:將application.yml中的以下屬性注入到類中:

## 自定義屬性
petshop:
  name: 睿芽寵物
  introduce: 種類齊全,安全可靠
  licences: 上市許可證,疫苗許可證
  infos:
    - phone: 36xx102
    - address: xx省xx市

新建PetShop類并注入屬性:

package com.it.vo;

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

import java.util.List;
import java.util.Map;

@Data
@Component
@ConfigurationProperties(prefix = "petshop")
public class PetShop {
    private String name;
    private String introduce;
    private List<String> licences;
    private Map<String, String> infos;
}

測試注入的結(jié)果:

package com.it.action;

import com.it.vo.PetShop;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/source")
public class SourceAction {
    @Autowired
    private PetShop petShop;

    @RequestMapping("/show")
    public Object show() {
        return petShop;
    }
}

三、注入實(shí)體對象

使用@ConfigurationProperties注解可以將關(guān)聯(lián)的對象一同注入。

修改application.yml文件:

## 自定義屬性
petshop:
  name: 睿芽寵物
  introduce: 種類齊全,安全可靠
  shopInfo:
    phone: 36xx102
    address: xx省xx市
    licences: 上市許可證,疫苗許可證
  pets:
    - pet:
      name: 金毛
      price: 3365.21
    - pet:
      name: 巴哥
      price: 2136.10

新建三個java類,并設(shè)置好引用關(guān)系:

@Data
public class PetShopInfo {
    private String phone;
    private String address;
    private List<String> licences;
}
@Data
public class Pet {
    private String name;
    private double price;
}
@Data
@Component
@ConfigurationProperties(prefix = "petshop")
public class PetShop {
    private String name;
    private String introduce;
    private PetShopInfo shopInfo;
    private List<Pet> pets;
}

測試注入結(jié)果:

@RestController
@RequestMapping("/source")
public class SourceAction {
    @Autowired
    private PetShop petShop;

    @RequestMapping("/show")
    public Object show() {
        return petShop;
    }
}

四、自定義文件注入

在resource目錄下新建petshop/petshop.properties文件,將application.yml中的屬性轉(zhuǎn)換為properties中的key-value格式:

## 自定義屬性
petshop.name=睿芽寵物
petshop.introduce=種類齊全,安全可靠

petshop.shopInfo.phone=36xx102
petshop.shopInfo.address=xx省xx市
petshop.shopInfo.licences=上市許可證,疫苗許可證

petshop.pets[0].name=金毛
petshop.pets[0].price=3365.21

petshop.pets[1].name=巴哥
petshop.pets[1].price=2136.10

修改PetShop類,添加@PropertySource注解導(dǎo)入properties文件

@Data
@Component
@PropertySource(value = "classpath:petshop/petshop.properties", encoding = "UTF-8")
@ConfigurationProperties(prefix = "petshop")
public class PetShop {
    private String name;
    private String introduce;
    private PetShopInfo shopInfo;
    private List<Pet> pets;
}

訪問http://localhost:8080/source/show發(fā)現(xiàn)可以得到與上例相同的結(jié)果。

總結(jié)

到此這篇關(guān)于SpringBoot屬性注入的多種方式的文章就介紹到這了,更多相關(guān)SpringBoot屬性注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之雙向鏈表

    Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之雙向鏈表

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數(shù)據(jù)結(jié)點(diǎn)中都有兩個指針,分別指向直接后繼和直接前驅(qū)。所以,從雙向鏈表中的任意一個結(jié)點(diǎn)開始,都可以很方便地訪問它的前驅(qū)結(jié)點(diǎn)和后繼結(jié)點(diǎn)。本文將為大家詳細(xì)介紹雙向鏈表的特點(diǎn)與使用,需要的可以參考一下
    2021-12-12
  • Java數(shù)組常見應(yīng)用詳解【創(chuàng)建、遍歷、排序、查找】

    Java數(shù)組常見應(yīng)用詳解【創(chuàng)建、遍歷、排序、查找】

    這篇文章主要介紹了Java數(shù)組常見應(yīng)用,結(jié)合實(shí)例形式詳細(xì)分析了java數(shù)組的基本定義、創(chuàng)建、遍歷、排序、查找等相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • maven 配置多個倉庫的方法

    maven 配置多個倉庫的方法

    這篇文章主要介紹了maven 配置多個倉庫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Gradle使用Maven倉庫的方法

    Gradle使用Maven倉庫的方法

    本篇文章主要介紹了Gradle使用Maven倉庫的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • springbootAOP定義切點(diǎn)獲取/修改請求參數(shù)方式

    springbootAOP定義切點(diǎn)獲取/修改請求參數(shù)方式

    這篇文章主要介紹了springbootAOP定義切點(diǎn)獲取/修改請求參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 分布式消息隊(duì)列RocketMQ概念詳解

    分布式消息隊(duì)列RocketMQ概念詳解

    RocketMQ?是阿里開源的分布式消息中間件,跟其它中間件相比,RocketMQ?的特點(diǎn)是純JAVA實(shí)現(xiàn),是一套提供了消息生產(chǎn),存儲,消費(fèi)全過程API的軟件系統(tǒng),本文詳細(xì)介紹了分布式消息隊(duì)列RocketMQ概念,需要的朋友可以參考下
    2023-05-05
  • Java開啟新線程并傳參方法代碼實(shí)現(xiàn)

    Java開啟新線程并傳參方法代碼實(shí)現(xiàn)

    這篇文章主要介紹了Java開啟新線程并傳參方法代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java分頁查詢--分頁顯示(實(shí)例講解)

    Java分頁查詢--分頁顯示(實(shí)例講解)

    下面小編就為大家?guī)硪黄狫ava分頁查詢--分頁顯示(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解Springboot之整合JDBCTemplate配置多數(shù)據(jù)源

    詳解Springboot之整合JDBCTemplate配置多數(shù)據(jù)源

    這篇文章主要介紹了詳解Springboot之整合JDBCTemplate配置多數(shù)據(jù)源,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用jmeter實(shí)現(xiàn)對jar包的調(diào)用方式

    使用jmeter實(shí)現(xiàn)對jar包的調(diào)用方式

    這篇文章主要介紹了使用jmeter實(shí)現(xiàn)對jar包的調(diào)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

葫芦岛市| 清水河县| 富阳市| 马公市| 嘉善县| 镇坪县| 娱乐| 广丰县| 桐庐县| 利川市| 伊春市| 乐业县| 玛沁县| 寻甸| 郁南县| 沂南县| 贵阳市| 大荔县| 普定县| 洛宁县| 饶河县| 南和县| 盐津县| 韶山市| 安陆市| 桃江县| 鄂托克前旗| 井陉县| 库车县| 汉中市| 福州市| 句容市| 土默特右旗| 浦县| 水富县| 灵石县| 渑池县| 苍溪县| 宁武县| 晋江市| 彭山县|