欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

適應(yīng)各種開發(fā),測(cè)試,線上,線下環(huán)境的Spring配置方式-創(chuàng)新互聯(lián)

背景

昆明網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司

假設(shè)開發(fā)了一個(gè)中間件,比如是一個(gè)緩存系統(tǒng),這個(gè)中間件要配置一個(gè)IP地址,還要配置一個(gè)Factory,從這個(gè)Factory里得到一個(gè)client,如:

<bean name="cacheFactory" class="com.test.cache.Factory">

? <property name="address" value="192.168.1.100"/>

</bean>

<bean name="cacheClient" factory-bean="cacheFactory" factory-method="getClient" />

然后這個(gè)中間件有三個(gè)集群(clusterA, clusterB, clusterC),分別給不同的業(yè)務(wù)使用,那就這時(shí)會(huì)有很多的配置的麻煩。

從使用者的角度出發(fā),應(yīng)用不喜歡引入一堆的配置,它們只希望import一個(gè)配置文件,然后在代碼里用@AutoWried注入一個(gè)Bean,就可以使用了。

Spring Bean被覆蓋的風(fēng)險(xiǎn)。

如果兩個(gè)不同的業(yè)務(wù)都使用了這個(gè)cache,然后它們的jar包又再被第三個(gè)業(yè)務(wù)引用,那么它們都import了一個(gè)cache service的配置,那么就有可能出現(xiàn)后面的Bean定義被前面的覆蓋了。而Spring默認(rèn)不處理這種Bean重復(fù)定義的問題。

@AutoWried 注入的問題。和上一個(gè)問題類似,@AutoWried注入時(shí)如果沒有配置@Qualifier,那么如果某個(gè)類有多個(gè)Bean實(shí)例,那么就有可能出現(xiàn)Bean注入混亂的情況。

線上環(huán)境臨時(shí)切換。必須要支持線上臨時(shí)修改配置。

開發(fā)者無(wú)需配置。要提供默認(rèn)值的配置,開發(fā)者不用做配置就可以直接在本地和測(cè)試環(huán)境運(yùn)行代碼。

靜默發(fā)布新版配置。比如當(dāng)集群遷移了,IP地址變換了,應(yīng)用不用修改代碼和配置,只需要用Maven重新打包即可。

可以利用的技術(shù)

spring profile,,@AutoWried,@Qualifier, PropertyPlaceholderConfigurer,PropertyOverrideConfigurer。

profile,PropertyPlaceholderConfigurer等的相關(guān),不一一介紹了。如果有不明白的,可以到spring的文檔里參考下。

簡(jiǎn)要列舉下是如何解決上面的問題的。

1.在緩存中間件的jar包里放上三個(gè)集群的默認(rèn)配置:

2.看下spring-cacheClusterA.xm里的內(nèi)容:

<beans profile="dev">

<bean id="cacheClusterAFactory" class="com.test.cache.CacheFactory">

<property name="address" value="${cache.address.clusterA:127.0.0.1}"/>

</bean>

<bean name="cacheClusterAClient" factory-bean="cacheClusterAFactory" factory-method="getClient" />

</beans>

<beans profile="test">

<bean id="cacheClusterAFactory" class="com.test.cache.CacheFactory">

<property name="address" value="${cache.address.clusterA:192.168.1.101}"/>

</bean>

<bean name="cacheClusterAClient" factory-bean="cacheClusterAFactory" factory-method="getClient" />

</beans>

<beans profile="product">

<bean id="cacheClusterAFactory" class="com.test.cache.CacheFactory">

<property name="address" value="${cache.address.clusterA:10.10.1.10}"/>

</bean>

<bean name="cacheClusterAClient" factory-bean="cacheClusterAFactory" factory-method="getClient" />

</beans>

里面定義了三個(gè)profile:dev,test,product。這三個(gè)profile分別對(duì)應(yīng)開發(fā),測(cè)試,線上三種環(huán)境。

而在具體bean的配置上,用了一些"${}"這樣的占位符,另外還為它們配置了默認(rèn)值。

PropertyPlaceholderConfigurer,PropertyOverrideConfigurer可以配置默認(rèn)值,估計(jì)這功能比較少人知道 。

這樣就解決了不同環(huán)境,還要有默認(rèn)配置的問題。

3.使用者的使用方法

假定使用者要用到clusterA和clusterB這兩個(gè)集群,那么可以這樣配置:

<context:property-placeholder location="classpath:env.properties" />

<import resource="cacheConfigDefault/spring-cacheClusterA.xml" />

<import resource="cacheConfigDefault/spring-cacheClusterB.xml" />

import了緩存中間件的默認(rèn)配置,然后還用placeholder加載了一個(gè)env.properties的環(huán)境變量文件。

那么對(duì)于spring-cacheClusterA.xml和spring-cacheClusterB.xml里的address這個(gè)屬性,如果沒有在env.properties里有配置,則會(huì)使用默認(rèn)配置。

如果想要修改,如修改cacheClusterA的配置,則可以在env.properties里加下:

#if comment this, will use the default value

cache.address.clusterA=testClusterAAddress

那么clusterA使用的就是用戶的配置,而不是所依賴的jar包的默認(rèn)配置了。

其它

調(diào)試spring placeholder時(shí),或者線上查看placeholder到底有沒有工作時(shí),可以把spring的log級(jí)別調(diào)為TRACE,這樣就可以看到很多有用的信息了。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

網(wǎng)頁(yè)名稱:適應(yīng)各種開發(fā),測(cè)試,線上,線下環(huán)境的Spring配置方式-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://chinadenli.net/article6/deegog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航企業(yè)網(wǎng)站制作、商城網(wǎng)站、全網(wǎng)營(yíng)銷推廣營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)