2016-07-12 1 views
2

ensemble profil actif comme context.getEnvironment().setActiveProfiles("DEV"); qui peut être réalisé en utilisantComment définir des profils actifs dans la configuration java à base d'annotation Spring

public class SpringWebInitializer implements WebApplicationInitializer 
{ 

    public void onStartup(final ServletContext servletContext) throws ServletException 
    { 
     AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
     context.getEnvironment().setActiveProfiles("DEV") 

    } 
} 

Mais lors de l'extension AbstractAnnotationConfigDispatcherServletInitializer. comment pouvons-nous atteindre le réglage du profil actif?

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer 
{ 
    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[] { WebConfig.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return null; 
    } 

} 

Répondre

0

Vous pouvez utiliser @ActiveProfiles("DEV") sur certains de vos @Configuration classes, mais le profil sans doute plus utile serait passer de l'extérieur - il suffit d'exécuter votre .jar avec le paramètre supplémentaire comme -Dspring.active.profiles=DEV

+0

merci pour la réponse @ActiveProfiles ("DEV") est dans les cas de test.is il ya une autre meilleure façon de la config java. –

0

Vous avez quelques options ..

  1. Vous pouvez essayer d'avoir un initialiseur de contexte pour charger le profil de ressort à partir d'un fichier de propriétés sur le chemin de classe, comme ce qui suit:

    public class ContextProfileInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { 
    
        private static final Logger LOGGER = LoggerFactory.getLogger(ContextProfileInitializer.class); 
    
        private static final String DEFAULT_SPRING_PROFILE = "local"; 
    
        @Override 
        public void initialize(final ConfigurableApplicationContext applicationContext) { 
    
         ConfigurableEnvironment environment = applicationContext.getEnvironment(); 
         try { 
           environment.getPropertySources().addFirst(new ResourcePropertySource("classpath:conf/application.properties")); 
           if (environment.getProperty("spring.profiles.active") == null) { 
            environment.setActiveProfiles(DEFAULT_SPRING_PROFILE); 
           } 
           LOGGER.info("Activated Spring Profile: " + environment.getProperty("spring.profiles.active")); 
          } catch (IOException e) { 
           LOGGER.error("Could not find properties file in classpath."); 
          } 
        } 
    
    } 
    

Voici quelques guides avec plus d'informations: (! Et d'une manière beaucoup plus facile)

https://gist.github.com/rponte/3989915

http://www.java-allandsundry.com/2014/09/spring-webapplicationinitializer-and.html

  1. Alternativement Utilisez le démarrage de printemps.

    Vous pouvez simplement définir spring.profiles.active dans un fichier application.properties dans le chemin de classe. Cela sera automatiquement récupéré et chargé dans votre environnement.

Plus d'infos ici:

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html

3

Activez votre profil en utilisant spring.profiles.active propriété.

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[] { WebConfig.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return null; 
    } 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     super.onStartup(servletContext); 
     servletContext.setInitParameter("spring.profiles.active", "DEV"); 
    } 

}