【问题记录】【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 @ 2022-12-26 21:28  酷酷-  阅读(736)  评论(0编辑  收藏  举报