springboot 如何取消starter的自动注入

目录
  • springboot 取消starter的自动注入
    • 看例子
    • 重点来了
  • SpringBoot 自动注入问题
    • 配置文件如下
    • 项目目录

springboot 取消starter的自动注入

starer是spring boot中一个很重要的概念,starter相当于一个模块,它能将所需要的的依赖整合在一起并对模块内的bean自动装配到spring IOC容器,使用者只需要在maven中依赖相应的starter包并无需做过多的依赖即可进行开发。

看例子

比如,我们导入了mybatis相关的依赖,但是我可能暂时没用到数据库,所以就没有做数据库相关的配置,这时候项目就会无法启动

2020-03-08 22:13:10.396 WARN 10692 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource

[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed;

nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate
[com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception;

nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

因为springboot中默认的数据库连接池是hikari,你没有在application.properties里面进行数据库相关的配置的话,那么就会无法自动装载dataSource

Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]

重点来了

如何取消相关starer的自动注入?

我们还是以数据库的这个为例子:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

那么,就需要在启动类加上如上配置,取消DataSourceAutoConfiguration的自动注入

springbootApplication是一个组合注解,其实里面真正实现自动注入功能的,是这个EnableAutoConfiguration注解

SpringBoot 自动注入问题

Description:

Field service in com.test.controller.UserController required a bean of type 'com.test.service.UserService' that could not be found.

Action:

Consider defining a bean of type 'com.test.service.UserService' in your configuration.

项目启动的时候出现出现问题

run

controller

service

dao

配置文件如下

项目目录

找了几个类,该注解的也注解了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • spring boot开发遇到坑之spring-boot-starter-web配置文件使用教程

    本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们知道Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的: 1.首先我们排除spring-boot-starter-web依赖中的Tomcat:在pom文件中排除tomcat的starter <dependency> <groupId>org.springframework.boot</groupId> <

  • SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用

    经过上一篇的介绍,相信小伙伴们已经按奈不住内心对springboot的向往,本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们知道Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的: 1.首先我们排除spring-boot-starter-web依赖中的Tomcat:在pom文件中排除tomcat的starter <dependency> <groupId>org.spr

  • SpringBoot自动配置之自定义starter的实现代码

    前言:前面已经介绍了自动配置的很多原理,现在我们着手自己定义一个starter. 需求:自定义redis-starter,要求当导入redis坐标后,SpringBoot自动创建Jedis的Bean.正式开始之前,我们可以查看Mybatis的起步依赖是如果实现自动配置的.我这里就省略了,大家根据之前的分析文章,自己看源码即可. 一.先创建一个SpringBoot工程redis-spring-boot-autoconfigure,该工程中添加jedis依赖,并且创建一个自动配置类RedisAuto

  • Spring boot创建自定义starter的完整步骤

    前言: Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是springboot的核心组成部分,springboot官方同时也为开发人员封装了各种各样方便好用的starter模块,例如: spring-boot-starter-web//spring MVC相关 spring-boot-starter-aop //切面编程相关 spring-boot-starter-cache //缓存相关 starter的出现极大的

  • SpringBoot2.1.x,创建自己的spring-boot-starter自动配置模块操作

    一)spring-boot-starter命名规则 自动配置模块命名规则:xxx-spring-boot,如:aspectlog-spring-boot 启动器命名规则:xxx-spring-boot-starter,如:aspectlog-spring-boot-starter 如两者只有一个模块:建议以xxx-spring-boot-starter方式命名. springboot建议以xxx前缀的方式对自己的自动配置命名的. 二)spring-boot-starter条件注解 注解 说明 @

  • springboot 如何取消starter的自动注入

    目录 springboot 取消starter的自动注入 看例子 重点来了 SpringBoot 自动注入问题 配置文件如下 项目目录 springboot 取消starter的自动注入 starer是spring boot中一个很重要的概念,starter相当于一个模块,它能将所需要的的依赖整合在一起并对模块内的bean自动装配到spring IOC容器,使用者只需要在maven中依赖相应的starter包并无需做过多的依赖即可进行开发. 看例子 比如,我们导入了mybatis相关的依赖,但是

  • springboot多数据源使用@Qualifier自动注入无效的解决

    目录 @Qualifier自动注入无效的解决 问题 问题的根本原因 其中问题出在 解决问题的方法 @Qualifier的作用和应用 @Qualifier的作用 @Qualifier自动注入无效的解决 问题 使用springboot进行多数据源时,发生了单例DataSource对应多个DataSourceBean的问题. 具体错误如下:XXXXX required a single bean, but 3 were found.通过@Qualifier来区分,或是在@Bean中添加name属性来区

  • Spring Boot自动注入的原理分析

    前言 我们经常会被问到这么一个问题:SpringBoot相对于spring有哪些优势呢?其中有一条答案就是SpringBoot自动注入.那么自动注入的原理是什么呢? 我们进行如下分析. 1:首先我们分析项目的启动类时,发现都会加上@SpringBootApplication这个注解,我们分析这个继续进入这个注解会发现,它是由多个注解组成的,如下 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @I

  • java SpringBoot自定义注解,及自定义解析器实现对象自动注入操作

    # java-SpringBoot自定义参数解析器实现对象自动注入 解析器逻辑流程图表 后台解析注解的解析器 首先,我在java后台编写了一个解析器,代码如下 import com.ruoyi.framework.interceptor.annotation.LoginUser; import com.ruoyi.project.WebMoudle.WebUser.domain.WebUser; import com.ruoyi.project.WebMoudle.WebUser.service

  • 解决springboot报错找不到自动注入的service问题

    springboot报错找不到自动注入的service 找了不少资料,最后发现是每个service接口(虽然已经使用了@service注解)的实现类都需要加上@service注解. 如果是使用junit生成的测试类,发现无法自动注入服务的话 在test启动类前加上 @RunWith(SpringRunner.class) @SpringBootTest @ComponentScan("com.XXX.service") 这是因为test包和启动类不在同一个包或子包下,无法自动注入 Sp

  • 使用SpringBoot 工厂模式自动注入到Map

    目录 SpringBoot 工厂模式自动注入Map 一.建立工厂类 二.两个实现类 三.注入到map里,测试 SpringBoot自动注入原理 一.自动配置原理 二.细节 SpringBoot 工厂模式自动注入Map 一.建立工厂类 public interface AnimalFactory { String food(); String animal(); } 二.两个实现类 @Service public class Cat implements AnimalFactory { @Over

  • springboot多模块化整合mybatis,mapper自动注入失败问题及解决

    目录 springboot多模块化整合mybatis,mapper自动注入失败 问题 解决 springboot mapper注入失败的一种原因 具体情况是 解决办法 springboot多模块化整合mybatis,mapper自动注入失败 问题 启动类添加@MapperScan或@ComponentScan,mapper类添加@Mapper或@Repository ==> Consider defining a bean of type 'com.ten.mapper.UserMapper'

  • 如何通过一张图搞懂springBoot自动注入原理

    目录 @SpringBootApplication注解解读 1.@SpringBootConfiguration 2.@EnableAutoConfiguration @Inherited @AutoConfigurationPackage AutoConfigurationImportSelector.class 3.@ComponentScan 总结 @SpringBootApplication注解解读 为什么我们的启动类上标注一个@SpringBootApplication注解,再加一个r

  • idea springBoot项目自动注入mapper为空报错的解决方法

    在SpringBoot项目中,如果使用了MyBatis作为持久层框架,使用自动注入时可能会遇到mapper报空指针异常的问题.这是因为在自动注入时,SpringBoot无法正确识别MyBatis的Mapper接口,需要进行一些额外的配置.解决这个问题的方法有两种: 1.在Mapper接口上添加注解在Mapper接口上添加@Mapper注解,告诉SpringBoot这个接口是一个Mapper接口,需要进行代理.示例如下: @Mapper public interface UserMapper {

  • SpringBoot通过自定义注解实现配置类的自动注入的实现

    目录 前言 实现思路 自定义配置类读取配置 自定义注解 创建子配置Bean 通过反射进行people bean的注入 使用 效果 回顾 延伸 前言 SpringBoot中通过@ConfigurationProperties或@Value注解就可以获取配置文件中的属性定义并绑定到Java Bean或属性上,这也是我们平常使用最多的一种方式.但是小胖在开发过程中就遇到一个问题:在做MQ的开发中,配置文件中会配置多个生产者分别提供不同的业务能力,如果通过@ConfigurationProperties

随机推荐