【问题记录】【SpringBoot】启动不加载某个Starter,通过代码控制某个Starter加载
1 问题描述
最近在看Sa-Token,发现当引进Sa-Token的依赖包sa-token-spring-boot-starter,SpringBoot启动会自动加载Sa-Token的东西,我想通过某个配置或者代码来控制是否要加载Sa-Token的这些东西,也就是按需加载。
<dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>1.33.0</version> </dependency>
如图只要引入maven依赖,SpringBoot启动的时候就会加载。
2 解决办法
我的思路是SringBootApplication注解里exclude可以排除某些类的自动装配,但是我又不想在这个大注解里配,所以单独抽出一个Configuration来排除不需要装配的类,然后在需要的时候再引进这些类。
(1)查看依赖包的自动装配里会加载哪些类
(2)新增配置类,排除这些自动装配的类
1 @Configuration 2 @EnableAutoConfiguration(exclude = {SaBeanRegister.class 3 , SaBeanInject.class 4 , SaSsoBeanRegister.class 5 , SaSsoBeanInject.class 6 , SaOAuth2BeanRegister.class 7 , SaOAuth2BeanInject.class}) 8 public class SaTokenConfig { 9 }
(3)排除掉以后,新增一个注解类,通过注解,按需加载。
/** * @description 需要登录注解 */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Import({SaBeanRegister.class , SaBeanInject.class , SaSsoBeanRegister.class , SaSsoBeanInject.class , SaOAuth2BeanRegister.class , SaOAuth2BeanInject.class , SsoConfig.class}) public @interface SsoLogin { }
这是我的一个思路,实现了我想要的效果,不知道大佬们有没有更好的办法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了