最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解springboot的多種配置方式

 更新時(shí)間:2020年10月23日 12:27:37   作者:豬豬の陳さん  
這篇文章主要介紹了springboot的多種配置方式,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

java配置主要靠java類和一些注解,比較常用的注解有:

@Configuration :聲明一個(gè)類作為配置類,代替xml文件

@Bean :聲明在方法上,將方法的返回值加入Bean容器,代替 標(biāo)簽

@Value :基本類型或String屬性注入

@PropertySource :指定外部屬性文件

后面以Druid連接池配置為例,數(shù)據(jù)庫(kù)名稱為springboot_test

方式一

<!--pom.xml -->
<dependency> 
 <groupId>com.alibaba</groupId> 		  	
 <artifactId>druid</artifactId> 
 <version>1.1.6</version> 
</dependency>
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
</dependency>
# src/resources/jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/bos
jdbc.username=root
jdbc.password=123456
//src\main\java\com\itheima\config\DruidConfig.java
@Configuration
@PropertySource("classpath:jdbc.properties")
public class DruidConfig {
	@Value("${jdbc.url}")
	String url;
	@Value("${jdbc.driverClassName}")
	String driverClassName;
	@Value("${jdbc.username}")
	String username;
	@Value("${jdbc.password}")
	String password;

	@Bean
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(driverClassName);
		dataSource.setUrl(url);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		return dataSource;
	}
}

解讀:

@Configuration :聲明我們 DruidConfig是一個(gè)配置類

@PropertySource :指定屬性文件的路徑是: classpath:jdbc.properties

@Value 為屬性注入值(只能是基本類型或String)

@Bean將 dataSource() 方法聲明為一個(gè)注冊(cè)Bean的方法,Spring會(huì)自動(dòng)調(diào)用該方法,將方法的返回值加入Spring容器中。

方式二

<!--pom.xml -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.6</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<!-- ============不添加在IDEA 會(huì)報(bào)紅,但并不影響功能 ================= -->
<dependency>
  <groupId> org.springframework.boot </groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>
<!--============================================================== -->
# src/resources/application.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/bos
jdbc.username=root
jdbc.password=123456
//src\main\java\com\itheima\config\DruidConfig.java
@ConfigurationProperties(prefix = "jdbc")
public class DruidProperties {
	private String url;
	private String driverClassName;
	private String username;
	private String password;

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getDriverClassName() {
		return driverClassName;
	}

	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}
//src\main\java\com\itheima\config\DruidConfig.java
@Configuration
@EnableConfigurationProperties(DruidProperties.class)
public class DruidConfig {
	@Bean
	public DataSource dataSource(DruidProperties dp) {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(dp.getDriverClassName());
		dataSource.setUrl(dp.getUrl());
		dataSource.setUsername(dp.getUsername());
		dataSource.setPassword(dp.getPassword());
		return dataSource;
	}
}

解讀:

@ConfifigurationProperties注解聲明當(dāng)前類為屬性讀取類,在類上定義各個(gè)屬性,名稱必須與屬性文件中 jdbc. 后面部分一致。

@EnableConfigurationProperties()聲明要使用的屬性讀取類,使用該類有三種注入方式

@Autowired注入

//src\main\java\com\itheima\config\DruidConfig.java
@Configuration
@EnableConfigurationProperties(DruidProperties.class)
public class DruidConfig {
 @Autowired
 private DruidProperties dp;
	@Bean
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		//setter
		return dataSource;
	}
}

構(gòu)造函數(shù)注入

作為

//src\main\java\com\itheima\config\DruidConfig.java
@Configuration
@EnableConfigurationProperties(DruidProperties.class)
public class DruidConfig {
 	private DruidProperties dp; 
 public DruidConfig(DruidProperties dp){ this.dp = dp; }
	@Bean
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		//setter
		return dataSource;
	}
}

@Bean的方法參數(shù)注入(本例使用)

//src\main\java\com\itheima\config\DruidConfig.java
@Configuration
@EnableConfigurationPerProperties(DruidProperties.class)
public class DruidConfig {
	@Bean
	public DataSource dataSource(DruidProperties dp) {
		DruidDataSource dataSource = new DruidDataSource();
		//setter
		return dataSource;
	}
}

方式二通過屬性讀取類解決了@Value不能讀取對(duì)象屬性(如user.friend.name)的問題,但似乎就更加麻煩了

方式三(推薦使用)

事實(shí)上,如果一段屬性只有一個(gè)Bean需要使用,我們無(wú)需將其注入到一個(gè)類。

<!--pom.xml -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.6</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<!-- ============不添加在IDEA 會(huì)報(bào)紅,但并不影響功能 ================= -->
<dependency>
  <groupId> org.springframework.boot </groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>
<!--============================================================== -->
# src/resources/application.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/bos
jdbc.username=root
jdbc.password=123456
@Configuration
public class DruidConfig {
	@Bean
	@ConfigurationProperties(prefix = "jdbc")
	public DataSource dataSource() {
		return new DruidDataSource();
	}
}

方式四

<!--pom.xml -->
<dependency> 
 <groupId>com.alibaba</groupId> 		  	
 <artifactId>druid</artifactId> 
 <version>1.1.6</version> 
</dependency>
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
</dependency>
# src/resources/application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/bos
spring.datasource.username=root
spring.datasource.password=123456

思考:為什么這種方式不需要配置類可以讀取配置信息?

啟動(dòng)類跑main方法時(shí)候,查看SpringApplication構(gòu)造方法,如下追蹤

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

容易發(fā)現(xiàn),它是從 META-INF/spring.factories 中獲取類名信息,存儲(chǔ)在一鍵多值的Map中,打開spring.factories,debug對(duì)比

在這里插入圖片描述

發(fā)現(xiàn)鍵是文件藍(lán)色部分,值是綠色部分,往回看不難發(fā)現(xiàn)它將這些獲取的類都生成了實(shí)例,注入到IOC容器中。

打開 DataSourceProperties 發(fā)現(xiàn)這不是方式二嗎?

在這里插入圖片描述

點(diǎn)進(jìn)DataSourceProperties.class

在這里插入圖片描述

總結(jié):當(dāng)我們添加依賴后,執(zhí)行啟動(dòng)類時(shí)自動(dòng)加載DataSourceAutoConfiguration,讀取DataSourceProperties類,根據(jù)默認(rèn)的前綴spring.datasource在application.xml中讀取信息

到此這篇關(guān)于springboot的多種配置方式的文章就介紹到這了,更多相關(guān)springboot配置方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)優(yōu)雅停止線程的有效方法詳解

    Java實(shí)現(xiàn)優(yōu)雅停止線程的有效方法詳解

    這篇文章主要為大家詳細(xì)如何安全有效停止 Java 線程的,確保多線程應(yīng)用程序平穩(wěn)運(yùn)行并實(shí)現(xiàn)最佳資源管理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法(總結(jié)超詳細(xì))

    SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法(總結(jié)超詳細(xì))

    純注解配置SpringMVC程序,使用tomcat8.5.95版本啟動(dòng),能啟動(dòng)成功并且訪問index.jsp頁(yè)面,但是訪問/save時(shí)出現(xiàn)404無(wú)法訪問,本文給大家介紹了SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法,文章總結(jié)的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別

    詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別

    今天小編就為大家分享一篇詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-08-08
  • Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

    Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

    這篇文章主要為大家詳細(xì)介紹了Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 使用Guava?Cache原理及最佳實(shí)踐

    使用Guava?Cache原理及最佳實(shí)踐

    文章介紹了GuavaCache,這是一種支持高并發(fā)的本地緩存,它支持多種回收策略,如基于容量、時(shí)間和引用的回收,并提供了自動(dòng)加載、定時(shí)刷新和顯式清除緩存的功能,文章還討論了GuavaCache的適用場(chǎng)景和使用方法,并通過代碼示例和源碼分析,幫助讀者更好地理解和使用GuavaCache
    2025-02-02
  • Java實(shí)現(xiàn)大文件的切割與合并操作示例

    Java實(shí)現(xiàn)大文件的切割與合并操作示例

    這篇文章主要介紹了Java實(shí)現(xiàn)大文件的切割與合并操作,結(jié)合實(shí)例形式分析了java基于io及util操作大文件按指定個(gè)數(shù)分割與合并相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Spring Boot集成Spring Cache過程詳解

    Spring Boot集成Spring Cache過程詳解

    這篇文章主要介紹了Spring Boot集成Spring Cache過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • springboot啟動(dòng)類如何剔除掃描某個(gè)包

    springboot啟動(dòng)類如何剔除掃描某個(gè)包

    這篇文章主要介紹了springboot啟動(dòng)類如何剔除掃描某個(gè)包,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解析XML文件時(shí)的嵌套異常SAXParseException問題

    解析XML文件時(shí)的嵌套異常SAXParseException問題

    這篇文章主要介紹了解析XML文件時(shí)的嵌套異常SAXParseException問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java中toString()、String.valueOf()、(String)?強(qiáng)轉(zhuǎn)的區(qū)別

    java中toString()、String.valueOf()、(String)?強(qiáng)轉(zhuǎn)的區(qū)別

    在實(shí)際開發(fā)中,少不了使用這三種方法對(duì)某一個(gè)類型的數(shù)據(jù)進(jìn)行轉(zhuǎn)?String?的操作,本文就來(lái)介紹了java中toString()、String.valueOf()、(String)?強(qiáng)轉(zhuǎn)的區(qū)別,感興趣的可以了解一下
    2024-06-06

最新評(píng)論

枝江市| 鹤壁市| 紫金县| 吉隆县| 临城县| 宁武县| 柞水县| 瑞金市| 石阡县| 辰溪县| 衢州市| 垫江县| 山西省| 栖霞市| 论坛| 绥阳县| 武川县| 滕州市| 晋江市| 蒲江县| 和龙市| 珠海市| 萨嘎县| 正安县| 崇文区| 卢龙县| 维西| 清徐县| 塔城市| 伊春市| 固安县| 峨边| 永清县| 蒙自县| 金塔县| 乌恰县| 西充县| 沂源县| 伊通| 桃源县| 卢湾区|