一、建立2個繼承自Condition的類
package cn.edu.tju.config;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class MyCondition1 implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return false;
}
}
package cn.edu.tju.config;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class MyCondition2 implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return true;
}
}
二、建立一個配置類
package cn.edu.tju.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConditionConfig {
@Bean
@Conditional({MyCondition1.class})
public String getString(){
return "hello";
}
@Bean
@Conditional({MyCondition2.class})
public String getString2(){
return "world";
}
}
三、在Spring boot 的啟動類檢視哪個bean被裝配了
package cn.edu.tju;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Arrays;
@SpringBootApplication
public class MyStart {
public static void main(String[] args) {
ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(MyStart.class);
String[] names = configurableApplicationContext.getBeanNamesForType(String.class);
System.out.println(Arrays.asList(names));
}
}