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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

春季:以Map或Properties對(duì)象的形式訪問(wèn)所有Environment屬性

春季:以Map或Properties對(duì)象的形式訪問(wèn)所有Environment屬性

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

3 回答

?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

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


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


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)));


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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