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文件

SpringBoot 自动扫描第三方包及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失效的问题

原文链接:https://www.cnblogs.com/lostO/p/17377227.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 自动扫描第三方包及spring.factories失效的问题 - Python技术站

(0)
上一篇 2023年5月6日
下一篇 2023年5月6日

相关文章

  • Docker-利用dockerfile来搭建tomcat服务的方法

    Docker是一种容器化技术,可以使用Dockerfile文件来描述应用程序及其依赖项的构建过程,同时提供了简单且易于复制、移动、并在环境中部署的容器。 以下是搭建Tomcat服务的Dockerfile文件示例: # 基础镜像 FROM openjdk:8-jre-alpine # 设置Tomcat版本 ENV TOMCAT_MAJOR=8 \ TOMCAT…

    Java 2023年6月2日
    00
  • Java Runtime类详解_动力节点Java学院整理

    这里是针对“Java Runtime类详解_动力节点Java学院整理”的完整攻略。 什么是Java Runtime类? Java Runtime类是Java程序运行环境的一部分。它提供了许多重要的运行时方法,例如在程序运行时执行其他程序、获取JVM的空闲内存量、强制垃圾回收等。本身是一个单例类,通过获取 Runtime.getRuntime() 实例获得。 …

    Java 2023年5月20日
    00
  • Springboot中整合knife4j接口文档的过程详解

    下面是详细讲解“Springboot中整合Knife4j接口文档的过程详解”的完整攻略。 1. 什么是Knife4j Knife4j是一款基于SpringBoot的开源接口文档生成工具,可以快速生成美观、易读的API文档。与其他文档工具不同的是,Knife4j通过注解来自动生成接口文档,无需手动编写文档说明,大大提高了接口文档的编写效率。 2. 整合Knif…

    Java 2023年5月19日
    00
  • Java Runtime Environment怎么安装 JRE安装详细图文教程

    Java Runtime Environment怎么安装 JRE安装详细图文教程 什么是Java Runtime Environment Java Runtime Environment (JRE)是一个程序开发环境,它由包含Java运行时所需的库和系统组件的集合组成。JRE允许用户在电脑上运行Java编写的程序和Applet。 安装Java Runtime…

    Java 2023年5月26日
    00
  • Jsp+Servlet实现购物车功能

    一、Jsp+Servlet实现购物车功能简介 Jsp和Servlet结合使用,可以完美地实现购物车功能。购物车功能是电商网站中的重要部分之一,它允许购物者把想要购买的物品添加到购物车中,可以随时查看、删除和购买。 二、实现购物车功能的具体步骤 确定购物车存储的数据结构 购物车应该存储哪些信息?一般来说,购物车需要存储商品的数量、单价、总价、商品名称、图片等信…

    Java 2023年6月15日
    00
  • jdbc操作mysql数据库实例

    一、前言 Java Database Connectivity(JDBC)是Java提供的一种操作各种关系型数据库的API。本攻略将介绍如何使用JDBC操作MySQL数据库,包括连接MySQL数据库、创建表、插入记录、查询记录、更新记录和删除记录等操作。 二、依赖和环境需求 在开始实践之前,我们需要准备以下依赖和环境: MySQL数据库(可以是本地安装的,也…

    Java 2023年6月16日
    00
  • Java读取文件及基于正则表达式的获取电话号码功能详解

    Java读取文件及基于正则表达式的获取电话号码功能详解 在Java中,读取文件是一个很基础的操作,而基于正则表达式的获取电话号码则是一个常见的需求。本文将详细讲解如何使用Java实现这两个功能。 Java读取文件 在Java中,可以使用java.io.File类来表示一个文件,使用java.io.BufferedReader类来读取文件内容。以下是一段示例代…

    Java 2023年5月20日
    00
  • 图片验证码概述及实现步骤

    图片验证码是为了防止机器人或者恶意程序进行恶意添加、登录、注册等操作而采用的一种人机交互验证机制。其主要原理是用户需要识别并输入正确的图片中所显示的字符或者图形,来证明其为人类而非机器。下面是图片验证码的实现步骤。 步骤一:生成验证码图片 首先,我们需要生成一张验证码图片,通常可以使用 Python 中的 PIL 库或者 PHP 中的 GD 库来生成。生成过…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部