@AutoConfigureAfter和@AutoConfigureOrder的使用

简介

如果你想将在SpringBoot项目中的配置类进行排序,但在配置@AutoConfigureAfter或者是@AutoConfigureOrder注解之后仍不生效,那么你的项目中应该是缺少了spring.factories文件。因为SpringBoot 只会对从这个文件读取到的配置类进行排序。

1. @AutoConfigureAfter的使用例子

1.1 需求,要在加载ConfigurationB之后加载ConfigurationA

在这里插入图片描述

1.2 第一步:创建META-INF/spring.factories文件

在这里插入图片描述
在这里插入图片描述

1.3 第二步:添加@AutoConfiguteAfter注解

注意:在spring.factories里注册了的配置类,这里的@Configuration可省略

在这里插入图片描述
在这里插入图片描述

2. @AutoConfigureOrder的使用例子

2.1 需求:加载顺序C->B->A

在这里插入图片描述

2.2 第一步:创建META-INF/spring.factories文件

在这里插入图片描述

2.3 第二步:添加@AutoConfigureOrder注解

注意:执行优先级别根据数字决定,数字越小,越优先加载,负数也可以。

在这里插入图片描述
将B中的值设为1,C中的值设为0,就可以做到C->B->A的执行顺序。
控制台输出如下图:
在这里插入图片描述

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Spring Boot 中,@Conditional 和 @AutoConfigureAfter 是两个常用的注解,它们分别用于控制 Bean 的加载条件和 Bean 的加载顺序。下面分别对它们进行解析。 ## @Conditional @Conditional 注解用于控制 Bean 的加载条件,即只有满足指定的条件时,才会加载该 Bean。它的作用类似于 Spring Framework 中的 @Profile 注解,但更为灵活。 @Conditional 注解可以标注在配置类上或者 Bean 定义方法上,用于控制配置类或者 Bean 的加载条件。它的参数是一个实现了 Condition 接口的类,该类需要实现 matches 方法,用于指定 Bean 加载的条件。 下面是一个使用 @Conditional 注解的例子: ```java @Configuration @Conditional(MyCondition.class) public class MyConfig { @Bean public MyBean myBean() { return new MyBean(); } } ``` 这里,@Conditional(MyCondition.class) 指定了加载 MyConfig 配置类的条件,它的条件由 MyCondition 类中的 matches 方法指定。 ## @AutoConfigureAfter @AutoConfigureAfter 注解用于控制 Bean 的加载顺序,即指定在哪些 Bean 加载之后,才会加载当前 Bean。它的作用类似于 Spring Framework 中的 @DependsOn 注解,但更为灵活。 @AutoConfigureAfter 注解可以标注在配置类上或者 Bean 定义方法上,用于指定 Bean 加载的顺序。它的参数是一个字符串数组,指定了当前 Bean 依赖的其他 Bean 名称。 下面是一个使用 @AutoConfigureAfter 注解的例子: ```java @Configuration @AutoConfigureAfter({MyConfig1.class, MyConfig2.class}) public class MyConfig3 { @Bean public MyBean3 myBean3() { return new MyBean3(); } } ``` 这里,@AutoConfigureAfter({MyConfig1.class, MyConfig2.class}) 指定了在 MyConfig1 和 MyConfig2 配置类加载之后,才会加载 MyConfig3 配置类。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值