当前位置: 首页 > 面试题库 >

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

奚卓
2023-03-14
问题内容

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

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

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


问题答案:

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



 类似资料:
  • 个人资料        展示、管理个人的基本资料 点击编辑按钮,进入编辑模式,输入新的用户信息,点击保存,完成资料修改。

  • 问题内容: 我正在尝试在Web应用程序中提供静态资源,并且尝试了: 但是在Spring 5中不推荐使用WebMvcConfigurerAdapter。现在如何访问静态资源? 问题答案: 春季5-静态资源 从文档中:

  • 问题内容: 在将其他字段(例如位置,性别,雇主等)添加到用户个人资料时,是否应该在其中添加其他列并将其保存在其中?还是应该创建一个新表来保存用户个人资料信息? 另外,当用户上传个人资料图片时,是否应该将其保存在同一张表中?(请注意,这不是生产服务器,我只是在本地运行服务器上执行此操作以弄清楚问题)。谢谢 问题答案: 你必须为用户个人资料建立模型: 然后在中配置

  • 我正在尝试让Selenium webdriver(控制Firefox)更新其登录的Facebook帐户的个人资料图片。我使用了一个典型的建议,即查找文件输入并发送文件路径的密钥,下面是我得到的: 无论如何,我得到的错误是: 回溯(最后一次调用):文件“C:/Users/maste/PycharmProjects/accountGenerator/accountGenerator.py”,第136行

  • 问题内容: 我正在使用来存储一些其他的每用户信息AUTH_PROFILE_MODULE。 我们可以使用Django模板访问用户,但是由于只能通过函数访问配置文件,因此如何访问配置文件中的字段? 确实需要每次将配置文件显式传递到模板中吗? 问题答案: 使用。Django的模板语言会自动调用可调用的东西-在这种情况下为法。

  • 问题内容: 你好,我是python和django的新手,我需要一个获取当前用户配置文件的视图,我知道我应该使用User的get_profile,但我不知道如何使用它。我读了django文件,但并没有帮助我。这是我从doc中找到的: 问题答案: Django的文档说明了一切,尤其是存储有关用户的其他信息的部分。首先,您需要在字段中的某个位置定义一个模型,以获取用户的其他信息: models.py 然