一、傳統java配置
java配置主要靠java類和一些註解,比較常用的註解有:
- @Configuration:聲明一個類作爲配置類,代替xml文件
- @Bean:聲明在方法上,將方法的返回值加入Bean容器,代替標籤
- @value:屬性注入
- @PropertySource:指定外部屬性文件,
1.首先引入Druid連接池依賴:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
2.創建一個jdbc.properties文件,編寫jdbc屬性:
3.創建一個JdbcConfig類
解讀:
- @Configuration:聲明我們JdbcConfig是一個配置類
- @PropertySource:指定屬性文件的路徑是:classpath:jdbc.properties
- 通過@Value爲屬性注入值
- 通過@Bean將 dataSource()方法聲明爲一個註冊Bean的方法,Spring會自動調用該方法,將方法的返回值加入Spring容器中。
然後我們就可以在任意位置通過@Autowired注入DataSource了!
二、.SpringBoot的屬性注入
java配置方式通過屬性注入使用的是@Value註解。這種方式雖然可行,但是它只能注入基本類型值。而在SpringBoot中,提供了一種新的屬性注入方式,支持各種java基本數據類型及複雜類型的注入。
1.新建一個類
解讀:
在類上通過@ConfigurationProperties註解聲明當前類爲屬性讀取類
prefix="jdbc"讀取屬性文件中,前綴爲jdbc的值。
在類上定義各個屬性,名稱必須與屬性文件中jdbc.後面部分一致
需要注意的是,這裏我們並沒有指定屬性文件的地址,所以我們需要把jdbc.properties裏的配置放在application.properties裏,這是SpringBoot默認讀取的屬性文件名.
2.新建JdbcConfig
解讀:
通過@EnableConfigurationProperties(JdbcProperties.class)來聲明要使用JdbcProperties這個類的對象
三、springboot推薦更簡單的優雅注入
解讀
我們直接把@ConfigurationProperties(prefix = “jdbc”)聲明在需要使用的@Bean的方法上,然後SpringBoot就會自動調用這個Bean(此處是DataSource)的set方法,然後完成注入。使用的前提是:該類必須有對應屬性的set方法! 就是講解二中的JdbcProperties類
四、整合連接池
在剛纔引入jdbc啓動器的時候,SpringBoot已經自動幫我們引入了一個連接池:HikariCP,應該是目前速度最快的連接池了
因此,我們只需要指定連接池參數即可:
# 連接四大參數
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123
# 可省略,SpringBoot自動推斷
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.minimum-idle=10
如果你更喜歡Druid連接池,也可以使用Druid官方提供的啓動器:
<!-- Druid連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.6</version>
</dependency>
而連接信息的配置與上面是類似的,只不過在連接池特有屬性上,方式略有不同:
#初始化連接數
spring.datasource.druid.initial-size=1
#最小空閒連接
spring.datasource.druid.min-idle=1
#最大活動連接
spring.datasource.druid.max-active=20
#獲取連接時測試是否可用
spring.datasource.druid.test-on-borrow=true
#監控頁面啓動
spring.datasource.druid.stat-view-servlet.allow=true