Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

181
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda