




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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綁定
在配置文件中寫(xiě)入
servers:
ipAddress:
port:1234
detail:zhangsan
定義一個(gè)實(shí)體類(lèi)對(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)類(lèi)下的
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)入在寫(xiě)一個(gè)配置類(lèi),然后加上@Bean即可,啟動(dòng)類(lèi)中的@SpringBootApplication本身就是一個(gè)配置類(lèi)。所以直接在這寫(xiě)也可以。
導(dǎo)入druid坐標(biāo)
dependency
groupIdcom.alibaba/groupId
artifactIddruid/artifactId
version1.2.12/version
/dependency
啟動(dòng)類(lèi)
@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)類(lèi)下
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屬性只能用小寫(xiě),不能使用駝峰命名法,改成小寫(xiě)即可
@EnableConfigurationProperties()和@ConfigurationProperties的區(qū)別
@EnableConfigurationProperties開(kāi)啟對(duì)應(yīng)的屬性功能,可以通過(guò)配置中的屬性,讓我們對(duì)應(yīng)的類(lèi)名來(lái)做屬性注入,這樣也可以看出有哪些類(lèi)通過(guò)spring去管理
@ConfigurationProperties是做具體的屬性綁定的,對(duì)應(yīng)的配置文件。
當(dāng)我們使用了@EnableConfigurationProperties,且又在類(lèi)總使用了@Component,就會(huì)報(bào)錯(cuò),如下
這個(gè)錯(cuò)誤是,找到兩個(gè)bean,一個(gè)類(lèi)對(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è)類(lèi)中寫(xiě)了@Component,這個(gè)注解也是說(shuō)這個(gè)是一個(gè)bean對(duì)象,這樣就導(dǎo)致了同一個(gè)類(lèi)中對(duì)應(yīng)了兩個(gè)bean對(duì)象,所以產(chǎn)生錯(cuò)誤。這兩個(gè)注解不能同時(shí)使用,一般使用@EnableConfigurationProperties更能體現(xiàn)出是哪個(gè)類(lèi)受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ù)名任意大小寫(xiě)下劃線或者中線,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小能手健康課件圖片素材
- 肉類(lèi)副產(chǎn)品在國(guó)際市場(chǎng)的營(yíng)銷(xiāo)策略考核試卷
- 水環(huán)境污染防治與水源保護(hù)考核試卷
- 三次根式復(fù)習(xí)課件
- 特色糕點(diǎn)地域文化傳播考核試卷
- 電力線路金具選用與安裝考核試卷
- 《上海高中作文講座》課件
- 貓咪課件的名字
- 漢中船員考試試題及答案
- 調(diào)油員考試試題及答案
- 文藝學(xué)名著導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 子女撫養(yǎng)協(xié)議合同模板
- 健康證記錄表-自動(dòng)提示過(guò)期功能
- 物理與人類(lèi)文明學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 地質(zhì)災(zāi)害防治工程勘察規(guī)范DB50143-2003
- 商鋪用電收費(fèi)協(xié)議書(shū)模板
- 考察提拔干部近三年個(gè)人工作總結(jié)材料
- 2024年同等學(xué)力英語(yǔ)考試真題及詳解
- 電動(dòng)吊籃安全施工計(jì)算書(shū)
- DZT 0448-2023 滑坡崩塌泥石流災(zāi)害精細(xì)調(diào)查規(guī)范
- 2025年日歷臺(tái)歷中文版縱向排版帶節(jié)假日調(diào)休周日開(kāi)始
評(píng)論
0/150
提交評(píng)論