中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

怎么在網(wǎng)站里做關(guān)鍵詞優(yōu)化/小程序開(kāi)發(fā)多少錢

怎么在網(wǎng)站里做關(guān)鍵詞優(yōu)化,小程序開(kāi)發(fā)多少錢,網(wǎng)頁(yè)建設(shè)與制作,網(wǎng)站優(yōu)化怎么做分錄Spring運(yùn)行環(huán)境 Spring在創(chuàng)建容器時(shí),會(huì)創(chuàng)建Environment環(huán)境對(duì)象,用于保存spring應(yīng)用程序的運(yùn)行環(huán)境相關(guān)的信息。在創(chuàng)建環(huán)境時(shí),需要?jiǎng)?chuàng)建屬性源屬性解析器,會(huì)解析屬性值中的占位符,并進(jìn)行替換。 創(chuàng)建環(huán)境時(shí)&#xff0c…

Spring運(yùn)行環(huán)境

Spring在創(chuàng)建容器時(shí),會(huì)創(chuàng)建Environment環(huán)境對(duì)象,用于保存spring應(yīng)用程序的運(yùn)行環(huán)境相關(guān)的信息。在創(chuàng)建環(huán)境時(shí),需要?jiǎng)?chuàng)建屬性源屬性解析器,會(huì)解析屬性值中的占位符,并進(jìn)行替換。

創(chuàng)建環(huán)境時(shí),會(huì)通過(guò)System.getProperties()獲取JVM系統(tǒng)屬性,會(huì)通過(guò)System.getenv()獲取JVM環(huán)境屬性。

Environment在Spring中的使用

spring在創(chuàng)建容器時(shí)需要指定需要加載配置文件路徑,在加載配置文件路徑時(shí),需要解析字符串中的占位符。解析占位符時(shí),需要環(huán)境信息,此時(shí)會(huì)創(chuàng)建一個(gè)標(biāo)準(zhǔn)的spring運(yùn)行環(huán)境,即創(chuàng)建StandardEnvironment對(duì)象。
1、調(diào)用setConfigLocations方法給spring設(shè)置需要加載的配置文件的路徑,源碼如下:

// 將配置文件的路徑放到configLocations 字符串?dāng)?shù)組中
public void setConfigLocations(@Nullable String... locations) {if (locations != null) {Assert.noNullElements(locations, "Config locations must not be null");// 設(shè)置了幾個(gè)配置文件,就創(chuàng)一個(gè)多長(zhǎng)的字符串?dāng)?shù)組,用來(lái)存放配置文件的路徑this.configLocations = new String[locations.length];for (int i = 0; i < locations.length; i++) {//解析路徑,將解析的路徑存放到字符串?dāng)?shù)組中this.configLocations[i] = resolvePath(locations[i]).trim();}}else {this.configLocations = null;}
}

2、調(diào)用resolvePath方法解析配置文件路徑中的占位符,源碼如下:

// 解析給定的路徑,必要時(shí)用相應(yīng)的環(huán)境屬性值替換占位符。應(yīng)用于配置位置。
protected String resolvePath(String path) {// 獲取環(huán)境,解決所需的占位符return getEnvironment().resolveRequiredPlaceholders(path);
}

3、調(diào)用getEnvironment方法獲取環(huán)境信息,如果沒(méi)有指定spring的環(huán)境信息,通過(guò)createEnvironment獲取默認(rèn)的環(huán)境,也就是spring的標(biāo)準(zhǔn)環(huán)境。getEnvironment方法源碼如下:

// 獲取spring的環(huán)境信息,如果沒(méi)有指定,獲取到的時(shí)默認(rèn)的環(huán)境
@Override
public ConfigurableEnvironment getEnvironment() {if (this.environment == null) {this.environment = createEnvironment();}return this.environment;
}

4、調(diào)用createEnvironment方法獲取默認(rèn)的環(huán)境(spring的標(biāo)準(zhǔn)環(huán)境),使用StandardEnvironment無(wú)參構(gòu)造創(chuàng)建對(duì)象。源碼如下:

// 獲取默認(rèn)的環(huán)境
protected ConfigurableEnvironment createEnvironment() {return new StandardEnvironment();
}

Spring的標(biāo)準(zhǔn)環(huán)境StandardEnvironment

Spring的標(biāo)準(zhǔn)環(huán)境StandardEnvironment適合在非web應(yīng)用程序中使用。

在AbstractApplicationContext類的createEnvironment方法中會(huì)調(diào)用StandardEnvironment的無(wú)參構(gòu)造方法創(chuàng)建環(huán)境對(duì)象。
1、調(diào)用StandardEnvironment的無(wú)參構(gòu)造方法,該方法中沒(méi)有任何邏輯處理,源碼如下:

public StandardEnvironment() {}

2、StandardEnvironment類是AbstractEnvironment抽象類的子類,因此使用StandardEnvironment的無(wú)參構(gòu)造創(chuàng)建對(duì)象時(shí)會(huì)調(diào)用父類AbstractEnvironment的無(wú)參構(gòu)造方法。AbstractEnvironment在下文中有描述。

3、重寫(xiě)AbstractEnvironment類中的customizePropertySources方法,用于設(shè)置屬性源,該方法通過(guò)父類進(jìn)行回調(diào)。
該方法會(huì)獲取JVM系統(tǒng)屬性和環(huán)境屬性并設(shè)置到MutablePropertySources類中存放屬性源的CopyOnWriteArrayList中。
1)JVM系統(tǒng)屬性通過(guò)System.getProperties()獲取;
2)環(huán)境屬性通過(guò)System.getenv()獲取。
StandardEnvironment類中customizePropertySources方法源碼如下:

// 設(shè)置屬性源,JVM系統(tǒng)屬性中的屬性將優(yōu)先于環(huán)境屬性中的屬性。
@Override
protected void customizePropertySources(MutablePropertySources propertySources) {/*** 1、MutablePropertySources類中使用CopyOnWriteArrayList存儲(chǔ)屬性源,集合中存儲(chǔ)PropertySource的子類* 2、PropertiesPropertySource是PropertySource的子類,PropertySource類中有三個(gè)成員變量* 		1)logger:日志對(duì)象* 		2)name:用來(lái)保存屬性源名稱* 		3)source:用來(lái)保存屬性源中的屬性*/// getSystemProperties():通過(guò)System.getProperties()獲取JVM屬性鍵值對(duì),并轉(zhuǎn)成MappropertySources.addLast(new PropertiesPropertySource(SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, getSystemProperties()));// getSystemEnvironment():通過(guò)System.getenv()獲取環(huán)境屬性鍵值對(duì),并撰成MappropertySources.addLast(new SystemEnvironmentPropertySource(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, getSystemEnvironment()));
}

4、StandardEnvironment類中設(shè)置了兩個(gè)靜態(tài)常量:
1)systemEnvironment:以系統(tǒng)環(huán)境為屬性源
2)systemProperties:以JVM系統(tǒng)屬性為屬性源

/** System environment property source name: {@value}.* 系統(tǒng)環(huán)境屬性源名:{@value}。 */
public static final String SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME = "systemEnvironment";/** JVM system properties property source name: {@value}.* JVM系統(tǒng)屬性屬性源名稱:{@value}。*/
public static final String SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME = "systemProperties";

Spring的抽象環(huán)境AbstractEnvironment

StandardEnvironment類是AbstractEnvironment抽象類的子類,因此使用StandardEnvironment的無(wú)參構(gòu)造創(chuàng)建對(duì)象時(shí)會(huì)調(diào)用父類AbstractEnvironment的無(wú)參構(gòu)造方法。

1、AbstractEnvironment的無(wú)參構(gòu)造方法,該方法會(huì)調(diào)用AbstractEnvironment的有參構(gòu)造方法,源碼如下:

public AbstractEnvironment() {this(new MutablePropertySources());
}

2、AbstractEnvironment的有參構(gòu)造
該方法的主要做三件事:
1)給成員變量賦值
2)創(chuàng)建屬性源屬性解析器
3)調(diào)用子類重寫(xiě)的customizePropertySources方法(方法回調(diào))。雖然方法回調(diào)在成員變量的賦值之后,但由于是引用傳遞,所以通過(guò)成員屬性可以獲取到改變之后的值。

// 使用了模板方法設(shè)計(jì)模式。
// 給成員變量賦值,并調(diào)用子類重寫(xiě)的方法,對(duì)propertySources進(jìn)行操作。
protected AbstractEnvironment(MutablePropertySources propertySources) {// 給全局變量 可變屬性源 賦值this.propertySources = propertySources;// 創(chuàng)建屬性解析器:PropertySourcesPropertyResolver 屬性源屬性解析器this.propertyResolver = createPropertyResolver(propertySources);// 自定義屬性源,此處回調(diào)子類重寫(xiě)的方法。子類通過(guò)重寫(xiě)該方法可以操作propertySources。spring標(biāo)準(zhǔn)環(huán)境StandardEnvironment重寫(xiě)了該方法customizePropertySources(propertySources);
}

3、調(diào)用createPropertyResolver創(chuàng)建屬性解析器,用于解析屬性值中的占位符并進(jìn)行替換。

// 在創(chuàng)建環(huán)境時(shí),需要?jiǎng)?chuàng)建屬性解析器
protected ConfigurablePropertyResolver createPropertyResolver(MutablePropertySources propertySources) {return new PropertySourcesPropertyResolver(propertySources);
}

4、AbstractEnvironment的成員屬性

// 指示Spring忽略系統(tǒng)環(huán)境變量,默認(rèn)值為"false"。
// false表示不會(huì)忽略系統(tǒng)環(huán)境變量,此時(shí)getSystemEnvironment方法會(huì)調(diào)用System.getenv()獲取環(huán)境屬性
// true表示會(huì)忽略系統(tǒng)的環(huán)境變量,此時(shí)getSystemEnvironment方法會(huì)返回一個(gè)空的Map
public static final String IGNORE_GETENV_PROPERTY_NAME = "spring.getenv.ignore";// 指定系統(tǒng)啟動(dòng)時(shí)使用哪些配置文件,可以使用逗號(hào)隔開(kāi)
public static final String ACTIVE_PROFILES_PROPERTY_NAME = "spring.profiles.active";// 指定系統(tǒng)啟動(dòng)時(shí)使用默認(rèn)的配置文件,可以使用逗號(hào)隔開(kāi)
public static final String DEFAULT_PROFILES_PROPERTY_NAME = "spring.profiles.default";// 保留的默認(rèn)的配置文件的名稱,如果沒(méi)有顯式設(shè)置默認(rèn)配置文件名稱,也沒(méi)有顯式設(shè)置活動(dòng)配置文件名稱,則默認(rèn)情況下該配置文件將自動(dòng)激活。
protected static final String RESERVED_DEFAULT_PROFILE_NAME = "default";// 日志對(duì)象
protected final Log logger = LogFactory.getLog(getClass());//系統(tǒng)啟動(dòng)時(shí)使用的配置文件
private final Set<String> activeProfiles = new LinkedHashSet<>();// 默認(rèn)配置文件
private final Set<String> defaultProfiles = new LinkedHashSet<>(getReservedDefaultProfiles());// 可變屬性源,使用該成員變量保存屬性源及通過(guò)該屬性源獲取的屬性
private final MutablePropertySources propertySources;// 可配置的屬性解析器
private final ConfigurablePropertyResolver propertyResolver;
http://www.risenshineclean.com/news/228.html

相關(guān)文章:

  • 上海公司網(wǎng)站開(kāi)發(fā)/互聯(lián)網(wǎng)運(yùn)營(yíng)培訓(xùn)課程
  • 外貿(mào)網(wǎng)站建設(shè)內(nèi)容包括哪些/軟文推廣去哪個(gè)平臺(tái)好
  • 圖書(shū)館網(wǎng)站建設(shè)背景/優(yōu)化seo可以從以下幾個(gè)方面進(jìn)行
  • 有效的網(wǎng)站建設(shè)公司/seo黑帽教程視頻
  • 工業(yè)和信息化部網(wǎng)站備案系統(tǒng)是什么意思/企業(yè)短視頻推廣
  • 廣東建設(shè)企業(yè)網(wǎng)站哪家好/網(wǎng)頁(yè)設(shè)計(jì)與制作書(shū)籍
  • 做阿里巴巴網(wǎng)站費(fèi)用嗎/鄭州百度推廣外包
  • 企業(yè)網(wǎng)站維護(hù)的要求包括/聚名網(wǎng)域名
  • 18款未成年禁止下載的游戲/哈爾濱怎樣關(guān)鍵詞優(yōu)化
  • 中國(guó)做的比較好的網(wǎng)站有哪些/百度域名
  • 怎么做門戶網(wǎng)站設(shè)計(jì)方案/google收錄提交入口
  • 廣州公司網(wǎng)站制作公司/寧波網(wǎng)站推廣排名
  • 贛州網(wǎng)站優(yōu)化/seochinazcom
  • 中石化網(wǎng)站群建設(shè)/如何推廣一個(gè)新的app
  • 玩具外貿(mào)網(wǎng)站/網(wǎng)頁(yè)怎么做
  • 網(wǎng)站建設(shè)哪家更專業(yè)/網(wǎng)站推廣計(jì)劃書(shū)范文500字
  • 知名外貿(mào)網(wǎng)站建設(shè)公司/seo是什么意思 seo是什么職位
  • 外貿(mào)網(wǎng)站建設(shè)推廣公司前景如何/sem全稱
  • 微信的企業(yè)網(wǎng)站模板/萬(wàn)能bt搜索引擎
  • 可愛(ài)卡通ppt模板免費(fèi)下載/搜索引擎優(yōu)化論文3000字
  • 中山做app網(wǎng)站公司嗎/引流推廣的句子
  • 推薦算法 網(wǎng)站開(kāi)發(fā) java/制作網(wǎng)頁(yè)用什么軟件
  • 小微型企業(yè)網(wǎng)站建立/市場(chǎng)營(yíng)銷是做什么的
  • 網(wǎng)站開(kāi)發(fā)的功能需求怎么寫(xiě)/shopify seo
  • 釘釘在線課堂/大連seo建站
  • 濰坊網(wǎng)站建設(shè)價(jià)格/一個(gè)好的產(chǎn)品怎么推廣
  • 域名做違法網(wǎng)站/西安百度競(jìng)價(jià)托管代運(yùn)營(yíng)
  • 招聘網(wǎng)站開(kāi)發(fā)價(jià)格/福州整站優(yōu)化
  • 德清縣城鄉(xiāng)建設(shè)局網(wǎng)站/微信朋友圈軟文大全
  • 網(wǎng)站建設(shè)公司做銷售好不好?/國(guó)內(nèi)最新新聞