日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

实例源码_SpringBoot数据库源码解析Template实例化操作

發布時間:2024/9/3 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例源码_SpringBoot数据库源码解析Template实例化操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Jdbc TemplateAutoConfiguration

在實踐過程中,除了數據源的配置外,我們還會經常用到 Jdbc Template。Jdbc Template是 Spring 對數據庫的操作在 jdbc 的封裝。本節我們簡單看一下 Jdbc Template 實例化操作,不做過多拓展。

JdbcTemplate 的自動配置是通過 Jdbc TemplateAutoConfiguration 來完成的,與上面講到的 DataSourceAutoConfiguration 的自動配置 在 spring.factories 中注冊位置一樣。 源代碼如下。

@Configuration(proxyBeanMethods = false)@ConditionalOnClass({ DataSource. class, JdbcTemplate.class })@ConditionalOnSingleCandidate(DataSource.class)@AutoConfigureAfter (DataSourceAutoConfiguration. class)@EnableConfigurationProperties (JdbcProperties.class)@Import({ JdbcTemplateConfiguration. class, NamedParameterJdbcTemplateConfiguration.class })public class JdbcTemplateAutoConfiguration {}}

JdbcTemplateAutoConfiguration 的具體實現為空,注解部分通過@ConditionalOn-Class指 定 必 須 存 在 DataSource 和 JdbcTemplate 類 才 會 進 行 實 例 化 ;

@ConditionalOnSingle-Candidate 指定只存在 -一個候選 DataSource 的 Bean 時才會實例化:@AutoConfigureAfter 指定在初始化 DataSourceAutoConfiguration 之后才會進行實例化;

@EnableConfigurationProperties 指定了配置類;

@lmport導入了JdbcTemplateConfiguration和NamedParameterJdbcTemplateConfigurati-on 兩 個 配 置 類 , 其 中 JdbcTemplateConfiguration 便是用來實例化 Jdbc Template 的。

@Configuration(proxyBeanMethods = false)@ConditionalOnMi ssingBean( JdbcOperations. class)class JdbcTemplateConfiguration {@Bean@PrimaryJdbc Template jdbcTemplate(DataSource dataSource, JdbcProperties propertie//根據數據源創建 Jdbc TemplateJdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);JdbcProperties . Template template = properties . getTemplate();//設置配置文件中的配置項到 dbc TemplatejdbcTemplate . setFetchSize(template . getFetchSize());jdbcTemplate . setMaxRows (template . getMaxRows());if (template . getQueryTimeout() != null) {jdbcTemplate. setQueryTimeout((int) template. getQueryTimeout(). getSeconds());return jdbcTemplate;}}

JdbcTemplate 的實例化操作很簡單,根據數據源創建-一個 JdbcTemplate 對象,并設置JdbcProperties 中對應的配置,分別設置了獲取數據大小、最大行數、查詢超時時間等內容。

JdbcTemplate 內部提供了我們操作數據庫常見方法,比如 query、queryForObject、update、execute 等, 在此就不展開了。

Jdbc TemplateAutoConfiguration 導入的 NamedParameterJdbcTemplateConfiguration 主要用來初始化 NamedParameterJdbcTemplate。NamedParameterJdbcTemplate 相當于Jdbc- Template 的包裝類,提供了基于占位符的 SQL 的功能。

@Configuration(proxyBeanMethods = false)Q@ConditionalOnsingleCandidate(JdbcTemplate . class)@ConditionalOnMiss ingBean(NamedParameterJdbcOperations .class)class NamedParameterIdbcTemplateConfiguration {@Bean@PrimaryNamedParameterJdbcTemplate namedParameterJdbcTemplate(JdbcTemplate jdbcTemplate)return new NamedParameterIdbcTemplate(jdbcTemplate);}}

NamedParameterJdbcTemplate 的實例化操作非常簡單,滿足自動配置條件時,以JdbcTemplate 為 參數 new-個 NamedParameterJdbc Template 即可。

無論是 JdbcTemplate 還是 NamedParameterJdbcTemplate 的實例化,注解部分都添加了@Primary,用來表示當存在多個同類型的對象時,當前對象會被優先注入。關于 JdbcTemplate 的 JdbcTemplateAutoConfiguration 配置類我們就講這么多。

異常案例分析

Spring Boot 中大多數自動配置引入之后不需要用戶操作什么便可自動生效,但是數據源的配置算是一個例外。如果只是引入了 spring-boot-starter-jdbc 這個 starter,啟動的時候是會拋出異常的。

這是為什么呢?這是因為如果引入了該 starter,等于變相引入了 spring-jdbc,而數據源自動化配置類 DataSourceAutoConfiguration 生效的限定條件為 classpath 中司時存在javax.sql.DataSource和org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType 兩個條件都滿足,數據源自動配置生效,開始初始化相關信息。而此時,在 application.properties 中如果沒有配置連接數據庫的相關配置,便會拋出異針對此異常,如果暫時不考慮使用數據庫連接,可去掉 spring-boot-starter-jdbc 的依賴,或明確聲明排除 DataSourceAutoConfiguration 的自動配可通過注解或配置文件兩種形式中的一-種來達到目的。在啟動類上添加注解排除方式。

@EnableAutoConfigurat ion(exclude = DataSourceAutoConfiguration. class)通過配置文件排除方式。

spring. autoconfigure . exclude=org . spr ingframework . boot . autoconfigure. jdbc.DataSourceAutoConfiguration

小結

本章重點介紹了 DataSourceAutoConfiguration 類和 Jdbc TemplateAutoConfiguration 類的 自 動 配 置 。 關 于 數 據 庫 的 自 動 配 置 還 有 很 多 相 關 配 置 和 功 能 實 現 , 比 如JndiDataSource-AutoConfiguration 、 XADataSourceAutoConfiguration 、 DataSourceTransactionManagerAuto-Configuration 等, 感興趣的朋友可以按照本章介紹的方法和思路進行源碼的學習。

本文給大家講解的內容是SpringBoot數據庫配置源碼解析:Jdbc Template 實例化操作

  • 下篇文章給大家講解的是SpringBoot消息源碼解析;
  • 覺得文章不錯的朋友可以轉發此文關注小編;
  • 感謝大家的支持!
  • 總結

    以上是生活随笔為你收集整理的实例源码_SpringBoot数据库源码解析Template实例化操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。