




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第SpringBoot自定義bean綁定實(shí)現(xiàn)目錄自定義bean綁定導(dǎo)入第三方bean第三方bea通過(guò)配置文件注參數(shù)出現(xiàn)Prefixmustbeincanonicalform@EnableConfigurationProperties()和@ConfigurationProperties的區(qū)別解除@ConfigurationProperties注解警告@ConfigurationProperties的松散綁定
自定義bean綁定
在配置文件中寫入
servers:
ipAddress:
port:1234
detail:zhangsan
定義一個(gè)實(shí)體類對(duì)象去接受這些屬性
importlombok.Data;
importperties.ConfigurationProperties;
importorg.springframework.stereotype.Component;
@Data//lombok省去get/set/toString
@Component//交給spring容器管理
@ConfigurationProperties(prefix="servers")//配置文件的位置,對(duì)應(yīng)的屬性注入
publicclassServerConfig{
privateStringipAddress;
privateintport;
privateStringdetail;
}
啟動(dòng)類下的
importcom.pojo.ServerConfig;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
publicclassSpringboot11ConfigurationApplication{
publicstaticvoidmain(String[]args){
ConfigurableApplicationContextrun=SpringApplication.run(Springboot11ConfigurationApplication.class,args);
ServerConfigbean=run.getBean(ServerConfig.class);
System.out.println(bean);
}
導(dǎo)入第三方bean
注入方式有許多,可以導(dǎo)入在寫一個(gè)配置類,然后加上@Bean即可,啟動(dòng)類中的@SpringBootApplication本身就是一個(gè)配置類。所以直接在這寫也可以。
導(dǎo)入druid坐標(biāo)
dependency
groupIdcom.alibaba/groupId
artifactIddruid/artifactId
version1.2.12/version
/dependency
啟動(dòng)類
@SpringBootApplication
publicclassSpringboot11ConfigurationApplication{
@Bean//注入
publicDruidDataSourcedruidDataSource(){
DruidDataSourceds=newDruidDataSource();
returnds;
publicstaticvoidmain(String[]args){
ConfigurableApplicationContextrun=SpringApplication.run(Springboot11ConfigurationApplication.class,args);
ServerConfigbean=run.getBean(ServerConfig.class);
System.out.println(bean);
DruidDataSourcedds=run.getBean(DruidDataSource.class);
System.out.println(dds);
}
運(yùn)行出來(lái)什么也沒(méi)
第三方bea通過(guò)配置文件注參數(shù)
application.yml下
datasource:
driverClassName:com.mysql.jdbc.driver.zhkc
username:張三
password:kczh
啟動(dòng)類下
packagecom;
importcom.alibaba.druid.pool.DruidDataSource;
importcom.pojo.ServerConfig;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importperties.ConfigurationProperties;
importorg.springframework.context.ConfigurableApplicationContext;
importorg.springframework.context.annotation.Bean;
@SpringBootApplication
publicclassSpringboot11ConfigurationApplication{
@Bean
@ConfigurationProperties(prefix="datasource")
publicDruidDataSourcedruidDataSource(){
DruidDataSourceds=newDruidDataSource();
returnds;
publicstaticvoidmain(String[]args){
ConfigurableApplicationContextrun=SpringApplication.run(Springboot11ConfigurationApplication.class,args);
//ServerConfigbean=run.getBean(ServerConfig.class);
//System.out.println(bean);
DruidDataSourcedds=run.getBean(DruidDataSource.class);
System.out.println(dds.getDriverClassName());
System.out.println(dds.getUsername());
System.out.println(dds.getPassword());
}
運(yùn)行結(jié)果
出現(xiàn)Prefixmustbeincanonicalform
這是因?yàn)閜refix屬性只能用小寫,不能使用駝峰命名法,改成小寫即可
@EnableConfigurationProperties()和@ConfigurationProperties的區(qū)別
@EnableConfigurationProperties開(kāi)啟對(duì)應(yīng)的屬性功能,可以通過(guò)配置中的屬性,讓我們對(duì)應(yīng)的類名來(lái)做屬性注入,這樣也可以看出有哪些類通過(guò)spring去管理
@ConfigurationProperties是做具體的屬性綁定的,對(duì)應(yīng)的配置文件。
當(dāng)我們使用了@EnableConfigurationProperties,且又在類總使用了@Component,就會(huì)報(bào)錯(cuò),如下
這個(gè)錯(cuò)誤是,找到兩個(gè)bean,一個(gè)類對(duì)應(yīng)著兩個(gè)bean導(dǎo)致不唯一了。
原因是:@EnableConfigurationProperties(ServerConfig.class),默認(rèn)會(huì)交給spring容器去管理,而要想讓spring去管理,首先得是一個(gè)bean對(duì)象,所就會(huì)把這個(gè)ServerConfig.class變成bean對(duì)象。我們?cè)谀莻€(gè)類中寫了@Component,這個(gè)注解也是說(shuō)這個(gè)是一個(gè)bean對(duì)象,這樣就導(dǎo)致了同一個(gè)類中對(duì)應(yīng)了兩個(gè)bean對(duì)象,所以產(chǎn)生錯(cuò)誤。這兩個(gè)注解不能同時(shí)使用,一般使用@EnableConfigurationProperties更能體現(xiàn)出是哪個(gè)類受spring管且需要配置注入。
解除@ConfigurationProperties注解警告
原因:springboot配置的處理器并沒(méi)有配置,現(xiàn)在不能識(shí)別這個(gè)注解
解決:那就給它加上
pom.xml加上:
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-configuration-processor/artifactId
/dependency
這樣警告就沒(méi)有了。
@ConfigurationProperties可以為第三方的bean綁定屬性。
@ConfigurationProperties的松散綁定
也叫寬松綁定,指的是在配置文件中的參數(shù)名任意大小寫下劃線或者中線,
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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é)《礦山地質(zhì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東職業(yè)技術(shù)學(xué)院《大數(shù)據(jù)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北體育職業(yè)學(xué)院《港澳臺(tái)廣告》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南財(cái)經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院《物理化學(xué)研究進(jìn)展與前瞻》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘇州健雄職業(yè)技術(shù)學(xué)院《動(dòng)物生物化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 煙臺(tái)汽車工程職業(yè)學(xué)院《資源材料與可持續(xù)發(fā)展》2023-2024學(xué)年第二學(xué)期期末試卷
- 漢口學(xué)院《對(duì)流層傳播》2023-2024學(xué)年第二學(xué)期期末試卷
- 呂梁師范高等??茖W(xué)?!盾浖こ獭?023-2024學(xué)年第二學(xué)期期末試卷
- 武漢理工大學(xué)《互聯(lián)網(wǎng)運(yùn)維技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 心理健康課件模板
- 中職學(xué)校招生接待流程
- 2024-2030年中國(guó)生姜及深加工市場(chǎng)發(fā)展動(dòng)態(tài)及前景規(guī)劃研究報(bào)告
- 戰(zhàn)略管理(南昌大學(xué))知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋南昌大學(xué)
- 《風(fēng)電機(jī)組數(shù)字孿生系統(tǒng)-第1部分:總體要求》
- 公安技術(shù)與警務(wù)指揮作業(yè)指導(dǎo)書(shū)
- 實(shí)驗(yàn)室溢灑處置考試評(píng)分表
- 學(xué)前教育法培訓(xùn)
- 人工智能設(shè)計(jì)倫理(浙江大學(xué))知到智慧樹(shù)章節(jié)答案
- 中藥材質(zhì)量追溯管理制度
- 《結(jié)構(gòu)式家庭療法提升“喪偶式育兒”家庭親密度的個(gè)案研究》
- 公司員工手冊(cè)(最完整)
評(píng)論
0/150
提交評(píng)論