spring-boot怎么扫描不在启动类所在包路径下的bean

news2024/11/15 19:50:41

前言: 项目中有多个模块,其中有些模块的包路径不在启动类的子路径下,此时我们怎么处理才能加载到这些类;

1 使用SpringBootApplication 中的scanBasePackages 属性;

@SpringBootApplication(scanBasePackages = {"com.xxx.xxx.路径1","com.xxx.xxx.路径2"})
public class SpringValidateApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringValidateApplication.class, args);
    }

}

通过scanBasePackages 设置我们需要的所有需要扫描的包路径,需要注意的是默认如果不指定scanBasePackages,默认会扫描当前启动类所在的包路径以及子包的路径,如果指定后默认这个将不会再起作用,所以指定时,要考虑扫描的所有的需要spring管理的类。

2 使用import 可以单独引入所需要的类:

@Configuration
@Import({HttpRequestDynamic.class})
public class WebConfiguration implements WebMvcConfigurer {
    @Autowired
    private HttpRequestDynamic httpRequestDynamic;

    /**
     * 拦截器配置
     *
     * @param registry 注册类
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(httpRequestDynamic).addPathPatterns("/**")
                .excludePathPatterns(
                        "/file/get/*",
                        "/image/view/*",
                        "/**/error"
                );
    }
}

@Import 中可以跟多个需要引入的类;

3 使用spring.factories 进行引入:

当项目中依赖的其它项目的jar 包,但是其它项目包路径不在当前启动类的包路径下,如果我们不行对当前项目进行包扫描路径的修改,可以通过对要引入的包的项目设置spring.factories 文件来达到目的;
3.1 在resources\META-INF文件夹下新建spring.factories 文件:
在这里插入图片描述

3.2 在spring.factories 文件中放入要加载的bean所在类:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  xxxx.xxx.WebConfiguration

如果需要引入多个类,则每个类以 " ,\ " 进行分隔,注意最后一个类没有" ,\ "

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 xxxx.MybatisFieldInterceptor,\
  xxxx.MybatisInterceptorAuthority,\
  xxxx.AuthorityConfigInit

4 参考:

4.1 从零搭建开发脚手架 Spring Boot配置扫描多个包目录的多种姿势;
4.2 spring注解之@Import注解的三种使用方式;
4.3 Spring的Factories机制介绍;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++linux高并发服务器项目实践 day5

Clinux高并发服务器项目实践 day5程序和进程单道、多道程序设计时间片并行和并发进程控制块(PCB)进程状态转换进程的状态进程相关命令进程号和相关函数进程创建父子进程的关系GDB多进程调试程序和进程 程序是包含一系列信息的文件,这些信息描…

你知道怎么实现定时任务吗?

诸位读者都知道笔者写东西都是用到才写,笔者的学习足迹自从参加工作之后就是 非系统 学习了,公司里源代码只要有笔者不知道的技术细节,笔者就会仔细的研究清楚,笔者是不喜欢给自己留下问题的那种学习习惯。 为何要写 笔者最近负…

如何使用Thymeleaf给web项目中的网页渲染显示动态数据?

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 目录一. 什么是Thymeleaf?二. MVC2.1 为什么需要MVC?2.2 MVC是什么?2.3 MVC和三层架构之间的关系及工…

AI绘图体验:想象力无限,创作无穷!(文生图)

基础模型:3D二次元 PIXEL ART (1)16-bit pixel art, outside of caf on rainy day, light coming from windows, cinematic still(电影剧照), hdr (2) 16-bit pixel art, island in the clouds, by studio ghibli(吉卜力工作室…

配置基于WSL2的Docker环境并支持CUDA

导言 Content 正如前文windows 10 开启WSL2介绍的,我们可以在windows10中使用linux子系统。今天本文介绍如何在此基础上安装Docker并支持在wsl中使用GPU。 准备工作 加入windows insider preview。建议选Dev通道,不要选Beta。 安装Nvidia WSL2-compa…

【数据结构】-计数排序

🎇作者:小树苗渴望变成参天大树 🎉 作者宣言:认真写好每一篇博客 🎊作者gitee:link 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录前言一、计数排序二、排序算法复杂度…

Nginx网站服务配置

一、Nginx概述 1.1 Nginx概述 Nginx: Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件…

分布式计算技术(上):经典计算框架MapReduce、Spark 解析

当一个计算任务过于复杂不能被一台服务器独立完成的时候,我们就需要分布式计算。分布式计算技术将一个大型任务切分为多个更小的任务,用多台计算机通过网络组装起来后,将每个小任务交给一些服务器来独立完成,最终完成这个复杂的计…

07 -全局状态管理

全局状态管理 7-1:开篇 在上一章中我们完成了 “一半” 的文章搜索功能,并且留下了一些问题。那么这些历史残留的问题,我们将会在本章节中通过 全局状态管理工具 进行处理。 那么究竟什么是 全局状态管理工具,如何在 uniapp 中…

【Flutter进阶】聊一聊组件中的生命周期、状态管理及局部重绘

前言 说到生命周期,熟悉Android开发的小伙伴一定第一时间会想到Activity的生命周期,由于在Flutter中一切都是组件,所以组件的生命周期其实是类似的。 在这个过程中组件的状态——State就非常重要,它记录这整个组件内可变部分的状…

【SSM整合】1—Spring和Mybatis整合

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ Spring专栏👉https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专栏👉htt…

linux安装kafka

目录 目录 一.安装包准备: 二.解压安装: 先将该安装包放入到/opt/install目录: 解压该文件到soft目录中: 改名,方便后续使用: 三修改其中配置和配置环境变量: 3.1 修改/opt/soft/kafka2…

camunda工作流引擎开发架构

Camunda的开发架构可以分为前端开发架构和后端开发架构。 前端开发架构: Camunda前端使用Angular框架进行开发,主要包括以下组件: 1、Cockpit:流程监控和管理界面。 2、Tasklist:任务管理和审批界面。 3、Admin&…

答题积分小程序云开发实战-开篇:项目介绍以及效果图

答题积分小程序云开发实战 开篇:项目介绍以及效果图 前言 我也看过不少的册子或者文章,大部分都很优秀,但也有的就长篇累牍,从时代背景讲起,复述各种基本概念、底层原理......嗯,看似很高级~ 但我阅读的时候,给我的感觉是,把你绕晕、把你劝退的感觉,相信大家都有同感,…

C++输入输出、缺省参数、函数重载、引用【C++初阶】

目录 一、C输入&输出 二、缺省参数 1、概念 2、分类 (1)全缺省 (2)半缺省 三、函数重载 1、概念 2、原理------名字修饰 一、C输入&输出 在C语言中,我们常用printf和scanf这两个函数进行输入输出。 …

产品-Axure9(英文版),.rp文件与.rplb文件的转换与区分

文章目录1、区分2、相互转换2.1 rp转为rplb2.1 rplb转为rp1、区分 rp文件是文档文件,可以理解为作品文件,自己的工作输出就是rp文件,图标如下。 rplb文件是库文件,是在制作文件过程中一个快捷库,图标如下 在点击绿色…

GitHub 上诞生了一个可视化低代码神器

作为开发者,你是否早已厌倦了日复一日的“增删改查”,每天都在重复造轮子,今天给大家推荐一款开源、靠谱、实用的低代码开发平台 -- ILLA Builder。 产品介绍 ILLA Builder 是 ILLA 的核心产品,是一款开源的低代码开发工具。通过…

ROS话题通信自定义+发布订阅代码--03

话题通信自定义msg 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味…

C++实现JPEG格式图片解析(附代码)

在网上看了好多解析JPEG图片的文章,多多少少都有问题,下面是我参考过的文章链接: 首先,解析的步骤1.读取文件的信息2.Huffman编码解码3.直流交流编码解析然而,读取多少个88矩阵才能解析出一个MCU呢?4.反量化…

8年测试老鸟总结,接口自动化测试测试用例编写(全覆盖场景)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 自动化测试&#xf…