I have multiple bean be annotated with @ConditionalOnMissingBean, which will be used? How can i control the priority?
CodePudding user response:
If you want to control @Bean
creation ordering, you can use the annotation @Order
@Component
@Order(1)
public class First {
public int first() {
return 1;
}
}
@Component
@Order(2)
public class Second {
public int second() {
return 2;
}
}
Or you can also use @DependsOn
@Configuration
public class ActionCfg {
@Bean
@DependsOn({"actionA","actionB"})
public ActionC actionC(){
return new ActionC();
}
@Bean("ActionA")
public ActionA actionA() {
return new ActionA();
}
@Bean("ActionB")
public ActionB actionB() {
return new ActionB();
}
}
ActionA
and ActionB
will initialized before ActionC
.
CodePudding user response:
The bean whose auto-configuration class is run first will be taken.
There is @AutoConfigureBefore
, @AutoConfigureAfter
and @AutoConfigureOrder
to control the order of auto-configuration classes.