首页 > 解决方案 > 如何将属性源分配给 micronaut 中的某个环境?

问题描述

我像这样通过我的 Application 类添加属性值

public class Application {

    @Loggable
    public static void main(String[] args) {

        SecretManager secretManager = new SecretManager();

        Micronaut.build(null)
                .mainClass(Application.class)
                .propertySources(PropertySource.of(
                        "name",
                        mapOf(
                                "datasources.default.username", secretManager.getValue(
                                        "DATASOURCES_DEFAULT_USERNAME")
                                ))).start();
    }
}

我希望能够通过执行类似的操作根据环境更改 datasources.default.username 的值。以下代码不起作用,但有没有办法做这样的事情?

public class Application {

    @Loggable
    public static void main(String[] args) {

        SecretManager secretManager = new SecretManager();

        if(environment == "Dev") {
            Micronaut.build(null)
                    .mainClass(Application.class)
                    .propertySources(PropertySource.of(
                            "name",
                            mapOf(
                                    "datasources.default.username", secretManager.getValue(
                                            "DATASOURCES_DEFAULT_USERNAME")
                            ))).start();
        } else {
            Micronaut.build(null)
                    .mainClass(Application.class)
                    .propertySources(PropertySource.of(
                            "name",
                            mapOf(
                                    "datasources.default.username", secretManager.getValue(
                                            "DATASOURCES_CUSTOM_USERNAME")
                            ))).start();
        }
    }
}


有没有办法做到这一点?

标签: javamicronaut

解决方案


您可以创建一个application-dev.yml从 env var 分配属性的

datasources.default.username: ${SOME_ENV}例如


推荐阅读