春季:如何在“个人资料”中进行AND?

阿尔特姆(Artem):

Spring Profile批注允许您选择配置文件。但是,如果您阅读文档,它仅允许您使用OR操作选择多个配置文件。如果指定@Profile(“ A”,“ B”),则在配置文件A或配置文件B处于活动状态时,您的bean都将启动。

我们的用例不同,我们要支持多种配置的TEST和PROD版本。因此,有时我们只想在概要文件TEST和CONFIG1都处于活动状态时才自动装配bean。

Spring有什么办法吗?最简单的方法是什么?

Mithun:

因为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,长度检查等)。但是,这个方向可能会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何部署春季启动战争文件到Tomcat时指定的个人资料?

如何禁用迁徙路线在一定春季的个人资料?

facebook API是否允许在帐户中的个人资料,网络,雇主,学校信息中进行搜索?

如何从Facebook获取个人资料图片

如何在Android中获取Facebook个人资料图片

如何区分个人资料?

SpringBoot:如何使个人资料专用资源

如何更改角度的个人资料图片?

如何在用户个人资料中隐藏按钮

如何在Django上链接到用户的个人资料

如何基于uid创建用户个人资料并导航到个人资料页面?

个人资料图片如何工作?

雷鸟-如何重建个人资料

如何在github个人资料上添加标签?

如何在Android中获取Facebook个人资料图片?

如何在Android中设置个人资料照片选项?

如何在本地自定义apparmor个人资料?

如何在子域中生成用户个人资料

如何知道每个Chrome个人资料对应哪个人

如何在 django 中显示编辑的个人资料图片

如果用户在登录后更改了他的 facebook 个人资料详细信息,如何在我的应用程序中更新 facebook 个人资料?

如何在 DRF 中更新个人资料图片

如何读取我的个人资料的密码?

如何在laravel中上传个人资料图片?

如何获取 Instagram 个人资料?

上传新的个人资料图片时如何删除旧的个人资料图片 - Django

如何在不影响其他用户的个人资料的情况下向用户的个人资料添加数据 React

如何分配特定的个人资料图片?

如何实现编辑个人资料页面?