在实际的项目开发中,经常遇到根据不同的环境做出不同的配置的需求,springboot中提供了将不同的配置写在指定的环境配置文件中,服务器启动时回读取指定的配置文件,做出对应的装配。为了应对更加灵活的装配不同的环境或@Bean,springboot还提供了其他的方式,在此介绍三种可选的条件装配方式。
- Profile
@Bean
@Profile("dev")
public Object init() {
System.out.println("dev环境时装配bean");
return new Object();
}
@Bean
@Profile("prod")
public Object init() {
System.out.println("prod环境时装配bean");
return new Object();
}
- Conditional
public class EnvCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return "true".equalsIgnoreCase(context.getEnvironment().getProperty("***.***"));
}
}
@Component
@Conditional(EnvCondition.class)
public class ***Service {
//...
}
- ConditionalOnProperty
@Component
@ConditionalOnProperty(name="***.***", havingValue="true")
public class ***Service {
//...
}
当在properties文件中读取***.***的值等于true时,会实例化***Service对象;反之,不会创建对象。
以上3中方式都可以进行条件装配,可根据具体业务需求选择应用,推荐搭建应用@ConditionalOnProperty的方式。
本文介绍了SpringBoot中实现条件装配的三种方式:@Profile用于根据不同环境加载不同Bean,@Conditional允许自定义装配条件,@ConditionalOnProperty则依据属性值决定Bean的实例化。这些特性使得在不同环境下灵活配置应用变得简单。
659

被折叠的 条评论
为什么被折叠?



