因为Spring没有开箱即用的AND功能。我建议以下策略:
当前
@Profile注释具有条件注释
@Conditional(ProfileCondition.class)。在
ProfileCondition.class其中循环访问概要文件,并检查概要文件是否处于活动状态。同样,您可以创建自己的条件实现并限制注册Bean。例如
public class MyProfileCondition implements Condition { @Override public boolean matches(final ConditionContext context, final AnnotatedTypemetadata metadata) { if (context.getEnvironment() != null) { final MultiValueMap<String, Object> attrs = metadata.getAllAnnotationAttributes(Profile.class.getName()); if (attrs != null) { for (final Object value : attrs.get("value")) { final String activeProfiles = context.getEnvironment().getProperty("spring.profiles.active"); for (final String profile : (String[]) value) { if (!activeProfiles.contains(profile)) { return false; } } } return true; } } return true; }}在您的课程中:
@Component@Profile("dev")@Conditional(value = { MyProfileCondition.class })public class DevDatasourceConfig注意:我没有检查所有的极端情况(例如null,长度检查等)。但是,这个方向可能会有所帮助。



