SpringBoot 自动扫描第三方包及spring.factories失效的问题
为什么会找不到
Spring 依赖注入 就是要让spring找到要注入的类 并且识别到了 @Component、@Service 等注解。
1. 当在开发的第三方包里写明了 @Component、@Service 等等
2. 引入了包,不论第三方库的引入,还是本地jar。总之是要引入到工程的
这时候还加入不到 IOC 容器,那就说明SpringBoot工程没有扫描到这些类。
解决方法
1. componentScan 或者SpringBootApplication(scanBasePackages= )
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.gradlespringbootdemo","com.example.gradlespringboottest"})
public class GradleSpringbootTestApplication {
public static void main(String[] args) {
SpringApplication.run(GradleSpringbootTestApplication.class, args);
}
SpringBootApplication 是个三合一的注解,其中就包含了ComponentScan 。本身是要默认扫描范围的,手动加入ComponentScan后,默认就失效了。要手动加回来
2. 写自动配置类
这种方法的原理与上一个其实是一样的,实际作用还是在目标上加入了componentScan 的扫描注解
3. spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.gradlespringbootdemo.service.TestService\
AbcClass\
DefClass
当开发第三方包时,可以使用这种方法。这样使用这个包的springboot工程就可以自动扫描到了。其实就时springboot启动时会扫描依赖jar包下的这个路径的spring.factories文件。这个文件可以写很多配置,例如Listener等。
如上代码将需要被扫描的类都写进去。
spring.factories 失效
这是版本问题,新的版本不再支持spring.factories文件了。改为上图中一长串那样的写法 即 META-INF\spring\org.springframework.boot.autoconfigure.EnableAutoConfiguration.imports这样,就是把原来的配置单独形成文件,直接把要扫描的类写进这个文件就可以了,每行写一个,像这样

SpringBoot 自动扫描第三方包及spring.factories失效的问题的更多相关文章
- springboot 关于第三方包 打包问题
第三方包: 添加library 依赖 在pom.xml中配置 <resources> <resource> <directory>lib</directory ...
- 注解 springbootapplication 自动扫描所在包及其子包。会将有注解的加入到spring容器中
注解 springbootapplication 自动扫描所在包及其子包.会将有注解的加入到spring容器中
- springboot打成jar包并携带第三方jar
1.修改打包方式为jar <packaging>jar</packaging> 2.添加第三方依赖到pom文件 我的第三方依赖包在resources目录下的lib目录下(地址可 ...
- springboot打成war包并携带第三方jar包
1.修改打包方式为war <packaging>war</packaging> 2.添加第三方依赖的jar到pom 我的第三方jar包在resoueces目录下 ...
- SpringBoot之spring.factories
组件提供者如何编写出仅需系统开发者进行包引入就可以对spring进行bean注入等操作? 其实在spring库中有提供自动化配置的库spring-boot-autoconfigure,我们只需要引 ...
- 大厂面试官问你META-INF/spring.factories要怎么实现自动扫描、自动装配?
大厂面试官问你META-INF/spring.factories要怎么实现自动扫描.自动装配? 很多程序员想面试进互联网大厂,但是也有很多人不知道进入大厂需要具备哪些条件,以及面试官会问哪些问题, ...
- springboot打成jar包和war包的两种方式,并引入第三方jar包!
springboot打成jar包和war包的两种方式,并引入第三方jar包! 首先把需要引入的第三方jar包引入到本地项目中,在引用的模块下加一个lib文件夹 一.打成jar包 1.修改pom文件里的 ...
- SpringBoot3.x中spring.factories功能被移除的解决方案
背景 笔者所在项目组在搭建一个全新项目的时候选用了SpringBoot3.x,项目中应用了很多SpringBoot2.x时代相关的第三方组件例如baomidou出品的mybatis-plus.dyna ...
- SpringBoot引入第三方jar的Bean的三种方式
在SpringBoot的大环境下,基本上很少使用之前的xml配置Bean,主要是因为这种方式不好维护而且也不够方便. 因此本篇博文也不再介绍Spring中通过xml来声明bean的使用方式. 一.注解 ...
- Springboot 打jar包分离lib,配置文件正确方式
文章来源:https://my.oschina.net/xiaozhutefannao/blog/1932764 POM.xml <?xml version="1.0" en ...
随机推荐
- Field userService in com.lin.hms.controller.LogController required a bean of type 'org.lin.hms.service.UserService' that could not be found.
需要一个bean但找不到 解决 我们在controller使用的service没有注入spring容器,那么我们可以在启动类上,加上包扫描注解,让这个bean所在的包能扫描到: @ComponentS ...
- Adams:一种使接触力(力矩等等)失效的方法
1 第一步:点击"运行脚本". 2 第二步:右击选择"仿真脚本",点击"创建". 3 第三步:选择"脚本类型"为&quo ...
- 6Sampling Configuration Space: 6.3 Using Accelerated Molecular Dynamics (aMD) to enhance sampling
6.3 Using Accelerated Molecular Dynamics (aMD) to enhance sampling 英文官网:http://ambermd.org/tutorials ...
- Java笔记第九弹
升级版: 数据安全问题的解决 1.同步代码块 (弊端:降低了运行效率) 格式:(锁--同一把锁) synchronized(任意对象){ 多条语句操作共享数据的代码 } //sellTicket.ja ...
- .NET应用系统的国际化-基于Roslyn抽取词条、更新代码
上篇文章我们介绍了 VUE+.NET应用系统的国际化-多语言词条服务 系统国际化改造整体设计思路如下: 提供一个工具,识别前后端代码中的中文,形成多语言词条,按语言.界面.模块统一管理多有的多语言词条 ...
- os模块的使用方法详解
os模块 os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口:即os模块提供了非常丰富的方法用来处理文件和目录. 使用的时候需要导入该模块:import os 常用方法如下: 方法名 作用 ...
- SpringBoot接入微信JSSDK,看这篇妥妥的
先给猴急的客官上干货代码 GitHub 接入微信JSSDK GitHub地址 Gitee 接入微信JSSDK GitHub地址 前言 事情的起因是因为疫情严重,领导要求做一个专题页,能够尽可能帮助所需 ...
- react之点语法(利用函数组件)
index.js import React, { Component } from 'react' import MyCom from './MyCom'; export default class ...
- Wikijs简介-强大&可扩展的开源维基软件
Wikijs - 最强大 最可扩展的开源维基软件 使用 wiki.js 美丽直观的界面,让文档成为写作的乐趣! 优点 随时随地安装 几乎适用于任何平台,并与PostgreSQL.MySQL.Maria ...
- Python安装-在Linux系统中使用编译进行安装
Python安装-在Linux系统中使用编译进行安装 你可以使用Ubuntu自带的Python3,不过你不能自由的控制版本,还要单独安装pip3,如果你想升级pip3,还会出现一些让人不愉快的使用问题 ...