版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Spring的@Value如何從Nacos配置中心獲取值并自動(dòng)刷新目錄@Value從Nacos配置中心獲取值并自動(dòng)刷新Nacos屬性值自動(dòng)刷新1.@NacosValue獲取最新值2.@Value獲取最新值
@Value從Nacos配置中心獲取值并自動(dòng)刷新
在使用Nacos作為配置中心時(shí),除了@NacosValue可以做到自動(dòng)刷新外,nacos-spring-context:0.3.4版本是支持@Value獲取Nacos配置中心的值,并動(dòng)態(tài)刷新的,該功能是Spri依靠ngValueAnnotationBeanPostProcessor類來(lái)實(shí)現(xiàn):
@Override
protectedTupleString,NacosValueTargetdoWithAnnotation(StringbeanName,
Objectbean,Valueannotation,intmodifiers,Methodmethod,Fieldfield){
if(annotation!=null){
if(Modifier.isStatic(modifiers)){
returnTuple.empty();
}
if(bean.getClass().isAnnotationPresent(NacosRefresh.class)){
Stringplaceholder=resolvePlaceholder(annotation.value());
if(placeholder==null){
returnTuple.empty();
}
NacosValueTargetnacosValueTarget=newNacosValueTarget(bean,beanName,
method,field);
nacosValueTarget.setAnnotationType(getAnnotationType().getSimpleName());
logger.debug("@Valueregisterautorefresh");
returnTuple.of(placeholder,nacosValueTarget);
}
}
returnTuple.empty();
}
分析其源碼可以看到,如果bean上有注解@NacosRefresh,則會(huì)自動(dòng)刷新。
在實(shí)際使用時(shí),發(fā)現(xiàn)bean上的注解是@Configuration則不會(huì)自動(dòng)刷新,而使用@Component則可以做到自動(dòng)刷新。
代碼如下:
@NacosRefresh
//@Component
@Configuration
publicclassBeanTest{
@Value("${autofresh.test}")
privateStringtestValue;
@NacosValue(value="${autofresh.test2}",autoRefreshed=true)
privateStringtestValue2;
/**
*@returnthetestValue2
*/
publicStringgetTestValue2(){
returntestValue2;
}
/**
*@paramtestValue2thetestValue2toset
*/
publicvoidsetTestValue2(StringtestValue2){
this.testValue2=testValue2;
}
/**
*@returnthetestValue
*/
publicStringgetTestValue(){
returntestValue;
}
/**
*@paramtestValuethetestValuetoset
*/
publicvoidsetTestValue(StringtestValue){
this.testValue=testValue;
}
}
測(cè)試類:
@Test
publicvoidtestValueRefreshinNacos()throwsInterruptedException{
System.out.println(beanTest.getTestValue());
System.out.println(beanTest.getTestValue2());
System.out.println("------修改前");
Thread.sleep(1000*60);
System.out.println(beanTest.getTestValue());
System.out.println(beanTest.getTestValue2());
System.out.println("------修改后");
}
這就和@Component與@Configuration的區(qū)別有關(guān)了,@Component注解的bean是原生bean,@Configuration是被cglib動(dòng)態(tài)增加的bean。
Nacos屬性值自動(dòng)刷新
1.@NacosValue獲取最新值
引入jar包:
dependency
groupIdcom.alibaba.boot/groupId
artifactIdnacos-config-spring-boot-starter/artifactId
version0.2.7/version
/dependency
編寫配置類:
@Configuration
@EnableNacosConfig(globalProperties=@NacosProperties(serverAddr="127.0.0.1:8848"))
@NacosPropertySource(dataId="example",group="test",autoRefreshed=true)
publicclassNacosConfiguration{}
編寫測(cè)試類:
@Controller
publicclassConfigController{
@NacosValue(value="${test.data}",autoRefreshed=true)
privatebooleandata;
@RequestMapping(value="/test",method=GET)
@ResponseBody
publicbooleanget(){returndata;}
}
2.@Value獲取最新值
引入jar包:
dependency
groupIdcom.alibaba.cloud/groupId
artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
version2.2.1.RELEASE/version
/dependency
引入配置:
spring:
application:
name:example
cloud:
nacos:
config:
extension-configs[0]:
dataId:test.yml
group:test
refresh:true
server-addr:
127.0.0.1:8848
namespace:c845e96f-4423-4618-8c26-5e4d510f566a
enabled:true
refresh-enabled:true
編寫測(cè)試類:
@RestController
@RefreshScope
publicclassTestController{
@NacosValue(value="${test.data}",autoRefreshed=true)
privateStringdata;
@Value(value="${test.data}")
privateStringdatas;
@GetMapping("test")
publicStringtest(){
return"data
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課件和課改教學(xué)課件
- 課件合同教學(xué)課件
- 高中生物教學(xué)中生物多樣性保護(hù)的教學(xué)實(shí)踐與反思課題報(bào)告教學(xué)研究課題報(bào)告
- 課件發(fā)送問題解決
- 《多式聯(lián)運(yùn)背景下貨運(yùn)資源整合的物流企業(yè)核心競(jìng)爭(zhēng)力培育研究》教學(xué)研究課題報(bào)告
- 課件參賽教學(xué)課件
- 傳媒公司年底總結(jié)匯報(bào)
- 門診護(hù)理倫理題庫(kù)及答案
- 春季防困安全專項(xiàng)培訓(xùn)會(huì)課件
- 邏輯學(xué)試題及答案
- 光儲(chǔ)充項(xiàng)目收益Excel自動(dòng)測(cè)算表
- 鞍鋼集團(tuán)電子招投標(biāo)交易平臺(tái)簡(jiǎn)明操作手冊(cè)
- 門店運(yùn)營(yíng)年終總結(jié)匯報(bào)
- 2025年中國(guó)流體動(dòng)壓軸承市場(chǎng)調(diào)查研究報(bào)告
- 快遞行業(yè)運(yùn)營(yíng)部年度工作總結(jié)
- 《蘇教版六年級(jí)》數(shù)學(xué)上冊(cè)期末總復(fù)習(xí)課件
- 油漆班組安全晨會(huì)(班前會(huì))
- 消費(fèi)類半固態(tài)電池項(xiàng)目可行性研究報(bào)告
- 山東省濟(jì)南市2024年1月高二上學(xué)期學(xué)情期末檢測(cè)英語(yǔ)試題含解析
- 口腔門診醫(yī)療質(zhì)控培訓(xùn)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
評(píng)論
0/150
提交評(píng)論