2,springboot整合oracle資料庫
前面,我們已經在本地建立了oracle表空間、登入使用者和一張使用者表:https://www.cnblogs.com/seeall/p/14016491.html
1,測試一下資料庫連線
結果,說明資料庫連線沒有問題。
2,使用資料庫連線池
以druid為例:
2.1,pom引入druid(有資料庫連線池功能)相關依賴
<!-- druid 資料庫連線池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.23</version>
</dependency>
2.2,在springboot專案的配置檔案appllication.yml或者appllication.properties配置資料來源和連線池屬性
遇到的問題:
a,從別的地方copy過來要特別注意空格和回車,不然屬性會獲取不到,手打基本沒問題;
b,bootstrap.yml檔案不生效,是因為bootstrap.yml是springcloud的配置檔案,springcloud是基於springboot的,
只有在springcloud專案中bootstrap.yml會比application.yml優先順序高,而此處不生效是因為此時的專案仍然為springboot專案,
不是springcloud專案,按網上的說法,pom引入spring-cloud-context依賴後,仍然在install過程中報錯了,此處就先不管了,
等以後提升到springcloud專案後,再分析為什麼bootstrap.yml不生效;
2.3,使用步驟2.2中配置,注入資料來源
@ConfigurationProperties是springboot的註解,通過這個註解,專案可以獲取到對應的配置屬性,並返回資料來源,
不需要你手動set url/driver/username/password;
遇到的問題:自動掃描的類中,如controller層和service層的類,無法注入上面的資料來源bean,反而普通的類(非掃描範圍裡的類)可以注入
最後曲線救國,使用以下步驟2.4的方式在掃描範圍裡的類可以注入“資料來源”;
2.4,使用步驟2.3的資料來源生成JdbcTemplate
首先,pom引入jdbcTemplate相關的jar包:
<!-- 使用JdbcTemplate需要的jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
遇到的問題:
1,controller無法引入service層的類,是因為service層的類不在掃描範圍內,加入掃描就可以了,如下:
2,奇怪的是,步驟2.3中資料來源那個bean無法在controller或service注入,但是jdbcTemplate的bean可以在controller和service中注入,
他們之間就差了一個@ConfigurationProperties註解,原因有待考證?
2.5,看下效果