Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
¿Cómo configurar el perfil activo mediante programación para cualquier entorno?

Quiero establecer un host de perfil activo dependiente para cualquier entorno y no puedo encontrar un gancho independiente del entorno.

La siguiente fábrica establecerá el perfil activo antes de que se construya el contexto de la aplicación.

/META-INF/spring.factories

 org.springframework.context.ApplicationContextInitializer=MyApplicationContextInitializer

MiAplicaciónContextInitializer.java

 public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { @Override public void initialize(ConfigurableApplicationContext ca) { ConfigurableEnvironment environment = ca.getEnvironment(); environment.addActiveProfile("myHost"); } }

Si JUnit ejecuta este ejemplo en un entorno simulado...

*Prueba.java

 ... @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc ...

... siguiente será registrado.

 ... ... RestControllerTests : The following profiles are active: myHost ...

¡pero el perfil myHost no está activo y el perfil predeterminado se usará en el contexto de JUnit!

Una prueba como Java Application y JUnit con argumentos VM funciona ...

 -Dspring.profiles.active=myHost

Utilizo una aplicación spring-boot-starter-web empaquetada en guerra y el perfil programático se configurará y usará en cualquier entorno

  • Aplicación Java
  • JUnit
  • Contenedor de servlet

¿Cómo configuro el perfil mediante programación para cualquier entorno?

No quiero usar argumentos de VM o variables de entorno porque el nombre de host actual establecerá el perfil.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La respuesta más simple después de mucho googlear :)

 @SpringBootApplication public class ExampleMain2 { public static void main(String[] args) { ConfigurableEnvironment environment = new StandardEnvironment(); environment.setActiveProfiles("dev"); SpringApplication sa = new SpringApplication(ExampleMain2.class); sa.setEnvironment(environment); sa.setAdditionalProfiles("remote","live"); sa.run(args); } }
over 4 years ago · Santiago Trujillo Denunciar

0

Tuve el mismo problema y finalmente lo resolví implementando la interfaz ActiveProfilesResolver.

En tu caso podrías hacer algo como esto:

 public class MyActivateProfilesResolver implements ActiveProfilesResolver { @Override public String[] resolve(Class<?> testClass) { // some code to find out your active profiles return new String[] {"myHost"}; } }

Y luego necesita vincular su prueba con su resolución de esta manera:

 @ActiveProfiles(resolver = MyActivateProfilesResolver.class)
over 4 years ago · Santiago Trujillo Denunciar

0

No creo que exista tal cosa como configurar el perfil activo de forma dinámica (mediante programación) en tiempo de ejecución una vez que la aplicación se está ejecutando, cualquier modificación del perfil no tendrá ningún efecto en los beans cargados y los archivos de propiedades.

Sin embargo, antes de ejecutar la aplicación, puede configurar los perfiles disponibles de la aplicación. por ejemplo:

 @SpringBootApplication public class DemoApplicationWithSysProperty { public static void main(String[] args) { System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, PROFILE_NAME); SpringApplication.run(DemoApplicationWithSysProperty.class, args); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda