Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!