91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot從application.properties中注入list和map方式是什么

發布時間:2021-12-17 16:21:37 來源:億速云 閱讀:296 作者:iii 欄目:開發技術

本篇內容主要講解“springboot從application.properties中注入list和map方式是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“springboot從application.properties中注入list和map方式是什么”吧!

需求

在配置類中,從application.properties中讀取一個復雜list。如List<Person>或者初始化一個map

直接上代碼

配置類

@Configuration
@Component
@ConfigurationProperties(prefix = "datahub")
public class Config {
    private List<DatahubParam> datahubParams; 
    private Map<String, Object> map; 
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }
 
    public Map<String, Object> getMap() {
        return map;
    }
 
    public List<DatahubParam> getDatahubParams() {
        return datahubParams;
    }
 
    public void setDatahubParams(List<DatahubParam> datahubParams) {
        this.datahubParams = datahubParams;
    }
}

DatahubParam.java:

public class DatahubParam {
    private String project;
    private String topic;
    private String subId;
    private String shardId;
 
    @Override
    public String toString() {
        return "{project: " + project + ", topic: " + topic + ", subId: " + subId + ", shardId: " + shardId + "}";
    }
 
    public String getProject() {
        return project;
    }
 
    public void setProject(String project) {
        this.project = project;
    }
 
    public String getTopic() {
        return topic;
    }
 
    public void setTopic(String topic) {
        this.topic = topic;
    }
 
    public String getSubId() {
        return subId;
    }
 
    public void setSubId(String subId) {
        this.subId = subId;
    }
 
    public String getShardId() {
        return shardId;
    }
 
    public void setShardId(String shardId) {
        this.shardId = shardId;
    } 
}

application.properties:

datahub.datahub-params[0].project = project-0
datahub.datahub-params[0].topic = topic-0
datahub.datahub-params[0].sub-id = subId-0
datahub.datahub-params[0].shard-id = shardId-0
 
datahub.datahub-params[1].project = project-1
datahub.datahub-params[1].topic = topic-1
datahub.datahub-params[1].sub-id = subId-1
datahub.datahub-params[1].shard-id = shardId-1
 
datahub.map.username=uwei
datahub.map.age=22
datahub.map.salary=15000

測試類

@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTest {
    @Autowired
    Config config;
 
    @Test
    public void test(){
        System.out.println(config.getDatahubParams());
        System.out.println(config.getMap());
    }
}

運行結果:

springboot從application.properties中注入list和map方式是什么

application.properties配置注入出現錯誤

配置list,map(list內含對象)多層嵌套問題,注入對象失敗,無法加載到配置文件

繼SpringBoot使用@Value無法賦值之后,kimball又遇到一個application.properties配置注入問題,可能作為新手,這里該踩得坑都掉下去了~真是一踩一個準。

問題描述

application.properties配置注入出現錯誤,配置list,map(list內含對象)多層嵌套問題,注入對象失敗,無法加載到配置文件。后詢問多方大神,仍無法加載,那么自己慢慢測試吧。

我的目錄結構是這樣:對象建立了postinfolist>postinfo>header三層結構,header內含Map鍵值對,postinfolist是postinfo的List集合,故也算是個多層嵌套的格式。一開始我的配置如下:

springboot從application.properties中注入list和map方式是什么

springboot從application.properties中注入list和map方式是什么

springboot從application.properties中注入list和map方式是什么

springboot從application.properties中注入list和map方式是什么

大概情況應該是描述清楚了吧,下面我們來分析沒有加載到配置文件的錯誤原因及分析方法。

作為freshman,我只是一步步驗證,既然加載不到這么多層,那么我從最低層header驗證,單獨配置了下header,header.headerMap.AppKey=xxx(header prefix注意修改),結果加載到了,那么好,說明不是配置文件加載啊或是引入啊什么的問題,應該是多層嵌套自己寫的有誤。

那么第二步,往上一層,配置postinfo.header.headerMap.AppKey=xxx(prefix對應修改,不在多說),又加載到了,那么可以知道問題所在了,配置postinfolist時,List這塊兒配置的不正確。這樣一步步排查,我們可以找到問題所在,所以有問題,先想排查方法,找到問題所在就可以迎刃而解,本質有點像方法論~

那么再回看這個配置文件,此時對application.properties的配置也有點領悟了,實際上就是 自上而下的表達出你要注入的參數,也就是我的上層postinfolist(Springboot幫我們注入時先找這個最上級),而后一點一點往后去找對應關系,也就是先找到對象內的postinfolist這個List集合,即對象的成員變量,那么配置我們就可以寫postinfolist.postinfolist獲得了List集合,而后要表達集合里的postinfo,postinfolist.postinfolist[0],即相當于list.get(0),這么來看是不是很容易理解application的配置文件寫法了,而后再逐層表示到你要注入的參數即可,也就是postinfolist.postinfolist[0].header.headerMap.AppKey,之前的寫法只是覺得是對應上prefix的前綴就可以讀到了,而其實Springboot為我們做的更多,將你寫的對象通過一步步層級關系來分析注入,也算是新人對Springboot的一點敬仰吧,之前接觸過一段ssh,那是一段痛苦的歷程,很多東西要自己配置,而springboot真是讓我們把重心放在開發功能上而不是繁瑣的配置文件上。

到此,相信大家對“springboot從application.properties中注入list和map方式是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤城市| 祁阳县| 伊川县| 青浦区| 阿合奇县| 碌曲县| 资源县| 兴业县| 姚安县| 通河县| 邮箱| 忻城县| 江华| 枣庄市| 巴塘县| 木兰县| 鹿邑县| 吴忠市| 德惠市| 吉林省| 青田县| 武夷山市| 商丘市| 县级市| 中阳县| 海安县| 和龙市| 淮南市| 镇赉县| 许昌县| 崇州市| 秭归县| 固始县| 吉安市| 咸宁市| 城固县| 枣阳市| 宁晋县| 金乡县| 新干县| 锦屏县|