20

スプリング ブート アプリケーションでアクティブなプロファイルを設定する方法。このアプリケーションは、スタンドアロンの Tomcat にデプロイされます。

2 つのプロパティ ファイル application-{profile}.properties があります。

私のアプリケーションクラス

    @SpringBootApplication
        public class Application extends SpringBootServletInitializer {

            @Override
            protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {        
                return application.sources(Application.class);
            }

            public static void main(String[] args) {
               System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "dev");
 ApplicationContext ctx = SpringApplication.run(Application.class, args);
      }
    }

Tomcat を埋め込んでアプリを実行すると、dev プロファイルがアクティブに設定され、正常に動作します。しかし、スタンドアロンのTomcatにデプロイすると. それは動作しません。

configureメソッドでアクティブなプロファイルを設定しようとしました。しかし、コンテキストから環境を取得すると、null ポインター例外が発生します。

アクティブなプロファイルの設定方法に関するヘルプ。

4

6 に答える 6

18

私も同じ問題を抱えていましたが、半日苦労した後、次のようになりました。

    @SpringBootApplication
    public class MyApplication extends SpringBootServletInitializer {

        public static void main(String[] args) {
            System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "dev");
            SpringApplication.run(MyApplication.class, args);
        }

        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "dev"); 
            super.onStartup(servletContext);
        }
    }
于 2015-10-08T10:04:00.743 に答える
3

プロファイルを動的にアクティブ化する代わりに、プロファイルを vm-arguments として catalina.sh に入れることができます。

CATALINA_OPTS="-Dspring.profiles.active=dev"
于 2015-07-10T14:05:38.013 に答える