第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

春季:以Map或Properties對象的形式訪問所有Environment屬性

春季:以Map或Properties對象的形式訪問所有Environment屬性

牧羊人nacy 2019-11-29 10:13:12
我正在使用注釋來配置我的spring環(huán)境,如下所示:@Configuration...@PropertySource("classpath:/config/default.properties")...public class GeneralApplicationConfiguration implements WebApplicationInitializer {    @Autowired    Environment env;}這導致我的財產(chǎn)default.properties成為的一部分Environment。我想在@PropertySource這里使用該機制,因為它已經(jīng)可以根據(jù)環(huán)境設(shè)置(例如config_dir位置)通過多個后備層和不同的動態(tài)位置來重載屬性。我只是剝離了后備,以使示例更容易。但是,我現(xiàn)在的問題是我想在中配置例如我的數(shù)據(jù)源屬性default.properties。您可以將設(shè)置傳遞給數(shù)據(jù)源,而無需詳細了解數(shù)據(jù)源期望使用什么設(shè)置Properties p = ...datasource.setProperties(p);但是,問題是,Environment對象既不是Properties對象,也不是對象,也不是Map任何可比較的對象。從我的角度來看,這是根本不可能的訪問環(huán)境的所有值,因為沒有keySet或iterator方法或任何可比性。Properties p <=== Environment env?我想念什么嗎?是否可以通過Environment某種方式訪問對象的所有條目?如果是,我可以將條目映射到Map或Properties對象,甚至可以通過前綴過濾或映射它們-將子集創(chuàng)建為標準Java Map...這就是我想要做的。有什么建議么?
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

這是一個老問題,但是公認的答案有一個嚴重的缺陷。如果Spring Environment對象包含任何替代值(如Externalized Configuration中所述),則不能保證它產(chǎn)生的屬性值映射將與Environment對象返回的屬性值匹配。我發(fā)現(xiàn),簡單地通過迭代PropertySource的S- Environment沒有,其實給任何覆蓋值。相反,它產(chǎn)生了原始值,該值應(yīng)該被覆蓋。


這是一個更好的解決方案。本品采用EnumerablePropertySource的S- Environment迭代通過已知的屬性名稱,但隨后讀取實際值了真正的春天的環(huán)境。這樣可以保證該值是Spring實際解析的值,包括所有覆蓋的值。


Properties props = new Properties();

MutablePropertySources propSrcs = ((AbstractEnvironment) springEnv).getPropertySources();

StreamSupport.stream(propSrcs.spliterator(), false)

        .filter(ps -> ps instanceof EnumerablePropertySource)

        .map(ps -> ((EnumerablePropertySource) ps).getPropertyNames())

        .flatMap(Arrays::<String>stream)

        .forEach(propName -> props.setProperty(propName, springEnv.getProperty(propName)));


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 1009 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號