【SpringBoot】注冊條件+自動配置原理+自定義starter

?注冊條件

注入到容器內實體類型對象的屬性都是null,這些對象并沒有什么實際的意義,因為實體類的對象就是來封裝對象的,結果你這些對象中什么都沒有;

解決方法是

1.給這些屬性賦值然后再注入bean

但是這些屬性又是固定的不是很好,所以寫入到配置文件中

將配置文件中的內容進行注釋,發現直接報錯

但是想要的效果是在配置文件中沒有找到對應值,就不進行注入bean,有值的情況下才進行注入

SpringBoot提供了設置注冊生效調價的注解@conditional

以下是基于該注解的衍生注解

以下三個是常用的注解

@ConditionalOnProperty

這樣就沒有注入Country這個類

打開配置這樣就注入了

@ConditionalOnMissingBean

@ConditionalOnClass

目前我環境中的web依賴是注釋掉的

自動配置原理

為什么要學習自動配置原理

1.在實際開發中我們經常會定義一些公共的組件,然后提供給各個部門使用,為了使用方便我們會將公共的組件定義為starer,如果你想自定義starter,就必須先了解自定義配置原理

2.應對,面試

自動配置

遵循預定大約配置的原則,在boot程序啟動后,起步依賴中的一些bean對象會自動注入到ioc容器

之前我們注入bean并不是自動注入配置

源碼分析

舉例:程序引入spring-boot-starter-web起步依賴,啟動后,會自動向ioc容器中注入DispatcherServlet類

自動配置注解

總結

2.7之前的配置類是寫在spring.factories中的,2.7-3.0spring.factories和imports都可以,3.0以后只支持imports

如何實現自動配置

根據以上實現思路寫出以下2.0的腳本文件

引入

這個jar包可以完成自動配置

面試回答

自定義stater

場景

在實際開發中,經常會定義一些公共組件,提供給各個項目團隊使用。而在SpringBoot的項目中,一般會將這些公共組件封裝為SpringBoot的starter

創建自定義mybatis的starter

步驟

創建maven工程

工程1

工程2

原始mybatis的文件結構

添加依賴包

創建自動配置類

更換自己寫的dmybatis-spring-boot-starter依賴,運行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89149.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Server reports Content-Length Mismatch 的根源與解決方案

“服務器聲明604字節,Yum卻期待28680字節”——當包管理器與倉庫服務器之間的信任崩塌時,會發生什么?問題重現 yum install package_name ... Interrupted by header callback: Server reports Content-Length: 604 but expected size is: 28…

基于 Python/PHP/Node.js 的淘寶 API 商品數據抓取開發教程

在電商數據分析、競品監控等場景中,抓取淘寶商品數據是常見需求。淘寶開放平臺(Open Platform)提供了標準化的 API 接口,通過合法途徑調用可高效獲取商品信息。本文將分別基于 Python、PHP、Node.js 三種語言,詳解淘寶…

【Tensor的創建】——深度學習.Torch框架

目錄 1 Tensor概述 2 Tensor的創建 2.1 基本的創建方式 2.1.1 torch.tensor 2.1.2 torch.Tensor 2.2 創建線性和隨機張量 2.2.1 創建線性張量 2.2.2 隨機張量 1 Tensor概述 PyTorch會將數據封裝成張量(Tensor)進行計算,張量就是元素為…

Python腳本批量修復文件時間戳,根據文件名或拍攝日期

實現以下功能 更正文件的 修改時間批量修改指定文件夾中的特定后綴的文件根據文件名中的日期修改(優先)根據 jpg 文件屬性中的拍攝日期修改根據 mp4 文件屬性中的創建媒體日期修改模擬運行(Dry Run)模式 依賴 若需要基于jpg文件屬…

[Mysql] Connector / C++ 使用

一、Connector / C 使用 要使用 C 語言連接 MySQL,需要使用 MySQL 官網提供的庫,可以去官網進行下載:MySQL :: MySQL Community Downloads 我們使用 C 接口庫來進行連接,要正確使用,還需要做一些準備工作&#xff1a…

【PDF識別改名】使用京東云OCR完成PDF圖片識別改名,根據PDF圖片內容批量改名詳細步驟和解決方案

京東云OCR識別PDF圖片并批量改名解決方案一、應用場景在日常辦公和文檔管理中,經常會遇到大量 PDF 文件需要根據內容進行分類和命名的情況。例如:企業合同管理系統需要根據合同編號、日期等內容自動命名 PDF 文件圖書館數字化項目需要將掃描的圖書章節按…

stm32-modbus-rs485程序移植過程

背景 【modbus學習筆記】Modbus協議解析_modus協議中0.001如何解析-CSDN博客 【Modbus學習筆記】stm32實現Modbus(從機)并移植_stm32 modbus數據處理-CSDN博客 繼上篇成功移植modbus從機例程之后,我要嘗試移植主機的程序。經提醒,可用野火的modbus代碼…

Spring MVC 執行流程詳解:一次請求經歷了什么?

Spring MVC 執行流程詳解:一次請求經歷了什么? 引言 在現代 Web 開發中,Spring MVC 作為 Spring 框架的重要組成部分,廣泛應用于構建靈活、可擴展的 Java Web 應用。作為一個基于 MVC(Model-View-Controller&#xff0…

Vue 3的核心機制-解析事件流、DOM更新、數據請求、DOM操作規范及組件庫DOM操作的解決方案

文章目錄概要整體介紹vue 中dom操作推薦方案實例概要 從Vue 3的核心機制出發,結合場景、應用與實例,系統化解析事件流、DOM更新、數據請求、DOM操作規范及組件庫DOM操作的解決方案: 整體介紹 ?? 一、事件流處理機制 核心機制 ? 三個階段…

Python從入門到高手9.2節-Python字典的操作方法

目錄 9.2.1 字典的操作 9.2.2 字典的查找 9.2.3 字典的修改 9.2.4 字典的添加 9.2.5 字典的刪除 9.2.6 今天你逛街了嗎 9.2.1 字典的操作 字典類型是一種抽象數據類型,抽象數據類型定義了數據類型的操作方法,在本節的內容中,教同學們徹…

omniparser v2 本地部署及制作docker鏡像(20250715)

關于 omniparser v2 本地部署,網上資料不算多,尤其是對于土薔內用戶,還是有些坑的。 1、安裝步驟 可參考兩個CSDN博客: (1)大模型實戰 - ‘OmniParser-V2本地部署安裝 鏈接 (2)…

自己寫個 `rsync` + `fswatch` 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的SFTP等 插件!

自己寫個 rsync fswatch 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的 SFTP等 插件! 作為一個碼農,我最頭疼的事情之一就是編輯器同步代碼到服務器這塊。用過各種各樣的sftp、rsync插件,感覺不好用。。 我琢磨著&#xff1…

linux中at命令的常用用法。

Linux 中 at 命令用于安排一次性定時任務,需要用到在某個時間只需要執行一次的命令的時候,可以使用at 1:安裝at # Debian/Ubuntu sudo apt install at# CentOS/RHEL sudo yum install at2:啟動at sudo systemctl start atd # 啟…

【安卓筆記】RxJava的使用+修改功能+搭配retrofit+RxView防快速點擊

0. 環境: 電腦:Windows10 Android Studio: 2024.3.2 編程語言: Java Gradle version:8.11.1 Compile Sdk Version:35 Java 版本:Java11 1. 介紹RxJava GitHub開源地址:https://github.com/Reactive…

Windows 下原生使用 claude code + Kimi K2

搞定了kimi k2 claude code在windows下原生使用 Windows下使用claude code的障礙是shell環境(命令行),非posix風格shell無法正常讓claude code讀取到url和key, 導致無法使用。解決問題的本質是使用符合posix風格的shell環境,我們…

Leetcode Easy題小解(C++語言描述)1

Leetcode Easy題小解(C語言描述) 相交鏈表 給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null 。 圖示兩個鏈表在節點 c1 開始相交**:**題目數據…

EP01:【NLP 第二彈】自然語言處理概述

一、NLP通向智能之路 1.1 圖靈測試 1.1.1 提出背景 由計算機科學家阿蘭?圖靈于 1950 年提出,是早期衡量機器智能水平的重要概念。 1.1.2 提出目的 判斷機器是否能表現出與人類相當的智能行為。 1.1.3 測試原理 場景設定:測試中存在一位人類測試者&#…

Ansible 查看PostgreSQL的版本

Ansible的基礎知識就不說了直接貼劇本- name: Check PostgreSQL versionhosts: db_serversbecome: yesvars:ansible_python_interpreter: /usr/bin/python3db_name: postgresdb_user: postgresdb_password: your_passwordtasks:- name: Install psycopg2ansible.builtin.packag…

【視覺SLAM筆記】第9章 后端1

一、理論1. 狀態估計的概率解釋我們來深入探討一下視覺SLAM中狀態估計的概率解釋。這可以說是理解現代SLAM算法(尤其是后端優化)的基石1. 問題的核心:不確定性SLAM(同步定位與建圖)的本質是在一個未知環境中&#xff0…

(數據結構)復雜度

基本概念說明 數據結構 定義:數據結構(Data Structure)是計算機存儲、組織數據的方式,指相互之間存在?種或多種特定關系的數據元素的集合。沒有?種單?的數據結構對所有用途都有用(要考慮適配、效率問題,在不同情況下使用合適的…