SpringBoot中DataSourceAutoConfiguration注解

最近在学习springBoot时,其中有很大的一个核心的只是点:自动配置。

通过 DataSourceAutoConfiguration 学习 自动配置是如何实现的。

自动配置中比较重要的一个点就是 条件化配置?

1、条件化配置

 JdbcTemplateCondition 的定义

package com.qxy.readinglist.conditions;


import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;


/**
 * 这个类 只有在 ClassPath里存在J
 */
public class JdbcTemplateCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        try {
            //加载 JdbcTemplate
            conditionContext.getClassLoader().loadClass("org.springframework.jdbc.core.JdbcTemplate");
            return true;
        } catch (ClassNotFoundException e) {
            return false;
        }
    }
}

如何 JdbcTemplateCondition

@Bean
@Conditional(JdbcTemplateCondition.class)//只有满足 JdbcTemplateCondition 条件,才会生成 bean
public MyService myService(){
    return new MyService();
}

 到此位置,你应该知道 条件化配置是怎么回事了吧,然后继续来看看 DataSourceAutoConfiguration

@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ DataSourcePoolMetadataProvidersConfiguration.class,
		DataSourceInitializationConfiguration.class })
public class DataSourceAutoConfiguration {
   .....      
}

  从上边可以看到,ConditionalOnClass,这个就是一个条件化注释,含义是:ClassPath里边有存在,DataSource.class, EmbeddedDatabaseType.class

转载于:https://www.cnblogs.com/qxynotebook/p/9735174.html

Seedance2.5本地部署:从环境配置到批量生图的工程实践指南 最近在几个技术社群里,看到不少人在讨论 AI 生图和视频工具。有人抱怨在线服务要么贵、要么慢、要么生成内容受限;也有人尝试了各种“免费”方案,结果不是功能残缺就是暗藏收费陷阱。就在大家觉得“又好又免费”的本地部署方案门槛太高时,Seedance2.5 突然冒了出来,而且口号相当直接:本地部署、完全免费、不联网、功能对标甚至超越一些付费产品。 但这类宣传我们见多了,真正的问题是:它到底能不能在普通开发者的机器上跑起来?生成质量是否真的可用?长期使用会不会遇到模型崩溃、依赖冲突或者资源爆炸?更重要的是,对于一个 阅读详情

相关推荐

在C++中,NULL和nullptr有什么区别?

这两个定义导致了冲突,C++中的NULL如果和C语言一样也是(void *)0指针,而C++不允许void*隐式转换成其它指针类型,那NULL就无法表示空指针了。因此,使用 nullptr可以增加代码的清晰性,避免类型安全问题。即使在混合C++和C代码时,nullptr也提供了一个明确无误的空指针表示,达到兼容的目的。C++11 引入 nullptr 彻底解决了这些问题,提高语言的安全性、清晰性和现代性。在了解NULL和nullptr背后的故事之后,相信大家以后再也不会用NULL了。

hebhljdx的博客 678

深入浅出DataSourceAutoConfiguration

深入浅出DataSourceAutoConfiguration

CERTAINTY的博客 2881

三相SVPWM逆变器双闭环PI解耦控制:从dq坐标系到参数整定实战

本文深入解析了三相SVPWM逆变器的双闭环PI解耦控制技术。通过引入dq坐标系,将交流量转换为直流量,并结合前馈补偿实现电流环的解耦控制。文章详细阐述了从数学模型推导、控制器设计到参数整定与SVPWM实现的完整流程,为工程师提供了从理论到实战的系统性指导。

weixin_28292761的博客 402

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})注解作用

exclude,排除此类的AutoConfig,即禁止 SpringBoot 自动注入数据源配置。 DataSourceAutoConfiguration.class 会自动查找 application.yml 或者 properties 文件里的 spring.datasource.* 相关属性并自动配置单数据源「注意这里提到的单数据源」。 那么问题来了,排除了自动配置,Spring还怎么识别到数据库配置呢? 答:显然接下来就需要手动配置,what?那我为什么要排除?然后手动指定数据源? 如果你发

jinrucsdn的专栏 4万+

UWB定位进阶:如何利用DW1000的CIR数据做NLOS信号识别?

本文深入探讨了如何利用DW1000芯片的信道脉冲响应(CIR)数据进行非视距(NLOS)信号识别,以提升UWB定位精度。通过分析CIR数据的核心价值、预处理方法、特征提取技术以及机器学习模型构建,为研究人员和工程师提供了实用的解决方案,帮助克服室内定位中的NLOS挑战。

weixin_28729205的博客 472

MTK Linux DRM分析(八)- KMS drm_crtc.c

CRTC 在 Linux DRM 子系统中是显示控制的核心,负责时序生成、模式设置和管线的调度。理解其工作原理和 API 对于进行底层图形开发、调试显示问题或 simply understanding how your graphics stack works 都至关重要。

iTom1900 1346

Springboot 模块分析 —— DataSourceAutoConfiguration 解析

DataSourceAutoConfiguration 生效流程分析。

一步一步往上爬 2万+

深入大模型-13-大模型Skills应用之标准目录结构和开发一个Skill的步骤

首先对比Prompt工程,上下文工程,Skills工程,MCP工具的概念与区别,然后介绍Skill的标准目录结构,同时描述了开发一个Skill的步骤和最佳实践。

qq_20466211的博客 747

数据源自动配置(DataSourceAutoConfiguration)

[SBIA-25] - About DataSourceAutoConfiguration1. DataSourceAutoConfiguration1.1.2 DataSourceTransactionManagerAutoConfiguration1.2 @EnableTransactionManagement参考 1. DataSourceAutoConfiguration 嵌入式数据库支...

ttyy1112的专栏 8388

华为OD机试 双机位C卷:微服务的集成测试 (C/C++/Py/Java/JS/Go)

华为OD机试 双机位C卷 :微服务的集成测试 ,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 微服务的集成测试 , 华为OD 微服务的集成测试

qq_45776114的博客 2063

第14.8章 高翔博士最新开源框架Lightning-LM源码解读(八):位姿平滑器PoseSmoother深度剖析,从原理到代码实现

本文深度解析了高翔博士开源框架Lightning-LM中的位姿平滑器PoseSmoother模块。该模块通过设置平滑因子,在保证位姿准确性的同时减少突变,使位姿变化更平稳。文章详细讲解了模块功能、数据流程和核心代码实现,包括构造函数、拷贝构造函数以及关键的PushDRPose和PushPose函数。重点分析了位姿平滑算法原理,涉及运动有效性校验、位姿队列维护和平滑因子调节等核心机制。此外还介绍了相关C++语法(如显式构造函数、默认拷贝构造)和优化方向。本解析为SLAM学习者提供了位姿平滑处理的实用实现范例。

行知SLAM 598

Spring Boot 自动配置 : DataSourceAutoConfiguration

概述 DataSourceAutoConfiguration是Spring Boot关于关系型数据库数据源的自动配置,目的是在开发人员没有自定义数据源DataSource bean组件时,根据开发人员所引入的包自动定义DataSource bean组件。 如果开发人员使用的时嵌入式数据库,H2,Derby或者HSQL,则会使用EmbeddedDataSourceConfiguration定义数据源...

Details Inside Spring 1万+

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动280.1 现象描述280.2 优化分析 openGauss学习笔记-280 ope

超哥的博客 307

SpringBoot之自动装配原理DataSourceAutoConfiguration注解剖析

如果步骤1不成立,则表明当前自动装配候选类不具有候选bean的条件,直接中断候选流程。如果步骤1成立则当前自动装配的候选类一定将成为IOC容器的候选bean。步骤2加载内部member类的目的:将这些内部类尝试也作为IOC容器的候选bean。步骤3@Import注解的目的:将导入的候选类试图也作为IOC容器的候选bean。内部member类 & @Import注解导入的类均为多个新的候选类,不管是步骤2还是步骤4优先遍历其每一个新增候选类,其流程如上步骤1 ~ 步骤5。

qq_36851469的博客 1638

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Springboot中@SpringBootApplication(exclude={DataSourceAutoConfiguration})注解的作用

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 注解的作用 在学习boot 项目的时候 ,发现在启动类中有一个这个的注解 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 该注解的作用是,排除自动注入数据源的配置(取消数据库配置),一般使用在客户端(消费者)服务中 ...

xiaochen0913的博客 1381

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringBoot自动装配原理-3

1、Application 典型springBoot应用的启动,一般在项目的根路径下面,一般是XXXApplication的入口类,入口会有main方法,这个是一个标准的java程序的入口。 package com.znn; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoc..

m0_54356563的博客 530

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringBoot自动配置原理

还记得曾经为了引入一个框架,而在 spring 的 xml 文件里面写一大堆的配置或者以注解的形式,定义一大堆的配置类,简直太繁琐,稍不注意还很容易出错。终于有一天,Spring Boot 出现了,简直就是天使般的存在,自从用上Spring Boot,腰也不疼了,头发掉的也少了。这一切都源于 Spring Boot 自动配置的特性。Spring Boot 遵循“约定优于配置”的原则,使用注解对一些常规的配置项做默认配置,减少或不使用 xml 配置,让你的项目快速运行起来。

逍遥人世欢 1482

SpringBoot自动装配原理深度解析:从@EnableAutoConfiguration到条件装配实战

自动装配是现代Java框架实现“约定大于配置”理念的核心技术,它通过分析项目依赖和运行环境,自动推断并创建所需的组件,从而减少开发者的重复配置工作。其原理基于Spring框架的@Import和ImportSelector机制,结合条件注解(如@ConditionalOnClass、@ConditionalOnMissingBean)实现动态、精准的Bean注册。这项技术的核心价值在于提升开发效率、降低项目启动成本,并确保配置的灵活性与可覆盖性,广泛应用于微服务、快速应用开发等场景。在SpringBoot中,

weixin_30617797的博客 302

springboot项目启动成功,tomcat无法启动

tomcat启动项目

rrgef的博客 1630

SpringBoot自动配置原理与实现详解

自动配置是现代化框架实现约定优于配置理念的核心技术,通过预定义的规则和条件判断自动完成组件装配。其技术原理主要基于条件注解(如@ConditionalOnClass)和配置类扫描机制,大幅减少了传统Spring应用中繁琐的XML配置。在Java生态中,SpringBoot的自动配置机制显著提升了开发效率,特别是在微服务架构和快速应用开发场景下。以数据源配置为例,只需引入对应starter和必要参数,即可自动装配数据库连接池。理解自动配置的工作原理,不仅能优化日常开发中的配置管理,还能帮助开发者定制自己的st

weixin_33585822的博客 225

SpringBoot自动装配原理简述

1、问题的引出? 当我们使用spring boot时,已不需要像spring MVC那样配置很多文件,只需要配置部分文件,而大部分的配置文件都由spring boot给我们做了! 2、以一个简单的demo为例 (1)spring boot主启动类 @SpringBootApplication是一个很重要的注解,可以近似的把它看作是三个注解之和; (2)SpringBootApplication @...

qq_54658577的博客 837

SpringBoot项目自定义一个 Starter

在很多大厂中项目中,项目中大部分都是使用自己封装的架构,比如我目前所在的平安(外包),就是对Spring在进行了二次封装,它们把它称之为ark架构。比如我们常常需要用到的一些工具类或者可以共用的类,其它组里也需要用到,那我们就可以在使用统一框架的前提下倒入我们自己的starter,来达到一个自动化配置的效果。 SpringBoot介绍 那我们就以目前流行的SpringBoot中举例,如何在项目中倒入自己自定义的一些jar包吧。首先在此之前,必须对SpringBoot有一定了解。它是基于S...

xiaomojun的专栏 331

SpringBoot中常见的错误

数据源配置问题 原因 spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。因为工程中没有关于dataSource相关的...

weixin_34023982的博客 184

SpringBoot-记录一只noob在学习中遇到的-问题1:Error creating bean with name ‘org.springframework.boot.auto……

菜鸟一枚,最近自己在搞SpringBoot的时候,启动项目时遇到一个问题,具体如下: 这是我在启动的时候报的错误,然后第一反应就是寻求万能的百度帮忙,结果就找到了原因–>感谢感谢,贴出地址 下面给出两个解决的方法 方法一:在springBoot的启动类上添加注解@EnableAutoConfiguartion(exclude={DataSourceAutoConfiguration.class}) 方法二:在@SpringBootApplication注解后面添加(exclude={DataSourc

qq_36940447的博客 1330

SpringBoot数据源——为什么平时默认线程池是Hikari

为什么平时默认线程池是Hikari?点开类,带你解读

运气不好努力来凑 1855

解决Caused by: java.lang.IllegalArgumentException: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate

在springboot整合Mybatisplus中遇见一个问题: Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplat 我的解决方法 解决1:添加依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-bo

wanFengYx的博客 2719
上一篇: 环境配置
下一篇: AC自动机
weixin_30872867
博客等级 码龄11年 104粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值