【问题记录】【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 {
}
复制代码

 

 这是我的一个思路,实现了我想要的效果,不知道大佬们有没有更好的办法。

 

posted @   酷酷-  阅读(812)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示