SpringBoot自定義bean綁定實(shí)現(xiàn)_第1頁(yè)
SpringBoot自定義bean綁定實(shí)現(xiàn)_第2頁(yè)
SpringBoot自定義bean綁定實(shí)現(xiàn)_第3頁(yè)
SpringBoot自定義bean綁定實(shí)現(xiàn)_第4頁(yè)
SpringBoot自定義bean綁定實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論