当前位置: 首页 > news >正文

在Spring Boot启动时禁止自动配置数据源相关的组件、@SpringBootApplication

一、@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})注解

在Spring Boot启动时禁止自动配置数据源相关的组件。

  • @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})注解的使用案例

这个注解通常应该写在微服务项目的主启动类上,也就是包含 main 方法的那个类。示例代码如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class YourApplication {public static void main(String[] args) {SpringApplication.run(YourApplication.class, args);}
}
  • @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})注解的作用

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 注解的作用在于定制Spring Boot的自动配置行为。Spring Boot的一大特性是自动配置(Auto-Configuration),它会根据项目类路径下的依赖自动配置Spring容器中的各种bean,极大地简化了应用的配置工作。DataSourceAutoConfiguration 是Spring Boot自动配置模块的一部分,它负责自动配置数据源(DataSource)的相关bean,如DataSource本身、JdbcTemplate、NamedParameterJdbcTemplate等。当项目中引入了数据库相关的依赖(如mysql-connector-java)时,Spring Boot默认会自动配置数据源。如果您在项目中不想使用Spring Boot自动配置的数据源,而是想手动配置或完全不使用数据库,那么可以使用 exclude 属性来排除 DataSourceAutoConfiguration 类。这样,Spring Boot启动时就不会尝试自动配置数据源相关的bean,也不会读取 spring.datasource.* 配置项去连接数据库。总结来说,@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 注解的主要作用是:在Spring Boot启动时禁止自动配置数据源相关的组件。

该注解我是为了解决以下问题

我不想要微服务项目中子项目中的mysql相关配置了,单无论如何都无法删除以下配置

spring.datasource.url=jdbc:mysql://${TARGET_DB_IP}:${TARGET_DB_PORT}/${TARGET_DB_NAME}?useUnicode=true&autoReconnect=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=${TARGET_DB_USER_NAME}
spring.datasource.password=${TARGET_DB_PASSWORD}
spring.datasource.driver-clas-name=com.mysql.jdbc.Driver

只要删了就会报错,把用到该环境变量的配置文件删了项目可以运行,但是把以上配置删了就会报错如下:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the following:If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.If you have database settings to be loaded from a particular profile you may need to activate it (the profiles test are currently active).

想着把mysql涉及的依赖都排除掉,就是用

<dependency>
<groupId>material-manage</groupId>
<artifactId>inAndOut-manage-service</artifactId>
<version>0.0.1</version>
<exclusions>
<exclusion>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</exclusion>
</exclusions>
</dependency>

该方法从子项目中把父项目的mysql依赖排除都会报错,最终用@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})注解解决。

二、@SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)注解

还有该注解与@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})注解功能正好相反

  • @SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)注解的作用是在启动Spring Boot应用时,排除ErrorMvcAutoConfiguration自动配置类的加载。

ErrorMvcAutoConfiguration类是Spring Boot提供的自动配置类之一,它用于配置错误页面和错误处理机制。当我们不想使用默认的错误页面和错误处理逻辑时,可以使用exclude属性将ErrorMvcAutoConfiguration类排除掉。

通过排除ErrorMvcAutoConfiguration类,我们可以自定义错误页面和错误处理逻辑,或者使用其他的错误处理机制。

http://www.lryc.cn/news/306619.html

相关文章:

  • 程序人生:不积跬步无以致千里
  • 通过二叉树例题深入理解递归问题
  • 【Android 协程常见用法】
  • python 进程笔记一 (概念+示例代码)
  • 各中间件数据库默认访问端口总结
  • 鲲鹏arm64架构下安装KubeSphere
  • python 函数-02-返回值注释格式
  • 【前端素材】推荐优质后台管理系统Upcube平台模板(附源码)
  • 可视化 RAG 数据 — 用于检索增强生成的 EDA
  • 数学建模论文、代码百度网盘链接
  • mysql 迁移-data目录拷贝方式
  • 学习 LangChain 的 Passing data through
  • C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2
  • 【Android 11】AOSP Settings WIFI随机MAC地址功能
  • dmrman备份还原
  • 网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)
  • 单细胞多组学整合与对齐的计算方法
  • 33.openeuler OECA认证模拟题16
  • javaScript数组去重的几种实现方式——适用非引用数据去重
  • Nexus Repository Manager
  • Python世界之运算符
  • 蓝桥杯倒计时47天!DFS基础——图的遍历
  • 体验LobeChat搭建私人聊天应用
  • ClickHouse 指南(三)最佳实践 -- 主键稀疏索引
  • 【Nginx】Nginx配置反向代理 和 https
  • ChatGPT第七讲
  • Chapter 2 of Effective C++ (构造/析构/赋值运算)
  • Android学习笔记 service启动方式
  • Redis 工具类 与 Redis 布隆过滤器
  • 自定义el-upload 上传文件