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

本文介绍了如何在SpringBoot项目中使用@SpringBootApplication注解的exclude属性,分别排除DataSourceAutoConfiguration(禁用自动配置数据源)和ErrorMvcAutoConfiguration(自定义错误处理)。这有助于控制组件的自动配置行为,避免默认设置冲突。
摘要由CSDN通过智能技术生成

一、@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 class


Action:

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类,我们可以自定义错误页面和错误处理逻辑,或者使用其他的错误处理机制。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值