1. 概要

このチュートリアルでは、 Spring Boot 2.5で追加された、システム環境変数のプレフィックスを指定できる機能について説明します。 このようにして、すべてのプロパティがプレフィックス付きのバージョンを想定しているため、同じ環境で複数の異なるSpringBootアプリケーションを実行できます。

2. 環境変数プレフィックス

同じ環境で複数のSpringBoot アプリケーションを実行する必要があり、多くの場合環境変数名の問題に直面して異なるプロパティに割り当てる必要があります

SpringBootを使用できます プロパティ これは、ある意味では似ている可能性がありますが、環境側で活用するために、アプリケーションレベルでプレフィックスを設定することもできます。

例として、単純なSpring Bootアプリケーションを設定し、このプレフィックスを設定して、アプリケーションプロパティ(tomcatサーバーポートなど)を変更してみましょう。

2.1. SpringBootアプリケーション

この機能を示すためにSpring Bootアプリケーションを作成してみましょう。 まず、アプリケーションにプレフィックスを追加しましょう。 私たちはそれを「プレフィックス」 シンプルに保つために:

@SpringBootApplication
public class PrefixApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(PrefixApplication.class);
        application.setEnvironmentPrefix("prefix");
        application.run(args);
    }
}

すでにアンダースコア文字(_)が含まれている単語をプレフィックスとして使用することはできません。 そうしないと、アプリケーションはエラーをスローします。

また、エンドポイントを作成して、アプリケーションがリッスンしているポートを確認します。

@Controller
public class PrefixController {

    @Autowired
    private Environment environment;

    @GetMapping("/prefix")
    public String getServerPortInfo(final Model model) {
        model.addAttribute("serverPort", environment.getProperty("server.port"));
        return "prefix";
    }
}

この場合、 Thymeleaf を使用して、サーバーポートを設定しながら、次のような単純な本体でテンプレートを解決しています。

<html>
    // ...
<body>
It is working as we expected. Your server is running at port : <b th:text="${serverPort}"></b>
</body>
</html>

2.2. 環境変数の設定

prefix_server_portなどの環境変数をたとえば8085に設定できるようになりました。 たとえば、Linuxでシステム環境変数を設定する方法を見ることができます。

環境変数を設定すると、アプリケーションがそのプレフィックスに基づいてプロパティを作成することが期待されます。

IDEから実行する場合は、起動構成を編集して環境変数を追加するか、すでにロードされている環境変数から選択する必要があります。

2.3. アプリケーションの実行

これで、コマンドラインまたはお気に入りのIDEからアプリケーションを起動できます。

ブラウザでURLhttp:// localhost:8085 / prefix をロードすると、サーバーが実行されており、ポートで以前にプレフィックスを付けたことがわかります。

It is working as we expected. Your server is running at port : 8085

プレフィックスが付いていない場合、アプリケーションはデフォルトの環境変数の使用を開始します。

3. 結論

このチュートリアルでは、SpringBootで環境変数のプレフィックスを使用する方法を見てきました。 たとえば、同じ環境で複数のSpring Bootアプリケーションを実行し、サーバーポートなどの同じ名前のプロパティに異なる値を割り当てる場合に役立ちます。

いつものように、この記事で紹介するコードは、GitHubから入手できます。