2015-07-07 10 views
6

So legen Sie das aktive Profil im Spring Boot fest Anwendung. Diese Anwendung wird im eigenständigen Tomcat bereitgestellt.Spring Boot Programmgesteuertes Festlegen von Profilen

Ich habe 2 Eigenschaftendateien application- {profile} .properties.

Meine Anwendungsklasse

@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); 
     } 
    } 

wenn ich die app mit eingebetteten Tomcat laufen die Entwickler-Profil wird als aktiv gesetzt und es funktioniert gut. Aber wenn ich in Stand-alone-Tomcat bereitstellen. Es funktioniert nicht.

Ich habe versucht, aktives Profil in Configure-Methode zu setzen. aber ich bekomme null Zeiger Ausnahme, wenn ich die Umgebung aus dem Kontext bekomme.

Hilfe zur Einstellung des aktiven Profils.

Antwort

6

Ich hatte auch das gleiche Problem, und nach einem halben Tag zu kämpfen endete ich mit diesem nach oben :

@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); 
     } 
    } 
1

Statt das Profil dynamisch zu aktivieren, können Sie die Profile als vm-Argumente in den catalina.sh setzen

CATALINA_OPTS="-Dspring.profiles.active=dev" 
+0

Ich habe eine ähnliche Situation. Ab sofort wird application- {profile} erstellt und das aktive Profil wird beim Ausführen der Anwendung über --spring.profiles.active = dev gesetzt. Es funktioniert gut. Derzeit wird die Anwendung von Eclipse ausgeführt. Wie kann ich dies erreichen, wenn ich dies auf tomcat auslege? – sunitha

+0

@Sunitha Sie können das Profil in tomcat vm-rguments einstellen und es sollte funktionieren – Mukun

0

System.setProperty ("spring.profiles.active", "dev");

Verwandte Themen