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

182
Vistas
¿Cómo obtener un argumento de línea de comando dentro de BeanFactoryPostProcessor?

Estoy usando Spring boot para mi aplicación escrita en Kotlin. Puedo obtener argumentos de línea de comando usando Environment.getProperty("nonOptionArgs", Array<String>::class.java)

Sin embargo, dentro BeanFactoryPostProcessor no puedo autoconectar el entorno, ya que este posprocesador se está ejecutando demasiado pronto en el ciclo de vida. ¿Cómo puedo acceder a los argumentos de la línea de comandos dentro de BeanFactoryPostProcessor ?

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

0

Bueno, puede implementar su BeanFactoryPostProcessor con EnvironmentAware para obtener el Environment :

 @Component public class FooBeanFactoryPostProcessor implements BeanFactoryPostProcessor , EnvironmentAware{ private Environment env; @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { env.getProperty("nonOptionArgs"); //I should be able to access env at here .Hehe } @Override public void setEnvironment(Environment environment) { this.env = environment; } }
over 4 years ago · Santiago Trujillo Denunciar

0

De tu comentario:

Me gustaría definir beans dinámicamente en función de los valores de los argumentos del comando. ¿Por qué hago esto en BeanFactoryPostProcessor? Es para asegurarme de que las definiciones de beans estén allí antes de la instanciación real de beans, por lo que no necesito la anotación @DependsOn.

En términos de cargar beans condicionalmente (como la configuración automática en Spring Boot), diría que es mucho más limpio usar las anotaciones @ConditionalXXX , más específicamente @ConditionalOnProperty .

Haciendo referencia al Java-doc para @ConditionalOnProperty aquí dijeron:

Condicional que comprueba si las propiedades especificadas tienen un valor específico. Por defecto, las propiedades deben estar presentes en el entorno y no ser iguales a false. Los atributos beingValue() y matchIfMissing() permiten más personalizaciones.

Entonces puedes hacer algo similar a:

 @ConditionalOnProperty(prefix = "my.env", name = "var", havingValue = "true", matchIfMissing = false)
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