Y a-t-il de toute façon que je puisse connaître dans mon programme, le chemin complet du fichier chargé via l'annotation @PropertySource de Spring. J'en ai besoin pour apparaître dans les journaux afin que l'on puisse savoir quel fichier de propriété est utilisé dans l'application

4
Ahmad 23 déc. 2015 à 14:01

2 réponses

Meilleure réponse

Ci-dessous semble fonctionner, même si je ne suis pas sûr que l'instance soit toujours de type ConfigurableEnvironment

@Component
public class MyListener implements ApplicationListener<ContextRefreshedEvent>{

  @Autowired
  private Environment env;

  private static final Logger log = LoggerFactory.getLogger(MyListener.class);

  @Override
  public void onApplicationEvent(ContextRefreshedEvent event) {

    if(env instanceof ConfigurableEnvironment){
      MutablePropertySources propertySources = ((ConfigurableEnvironment)env).getPropertySources();
      for(PropertySource ps : propertySources){
        log.info(ps.getName());  //if only file based needed then check if instanceof ResourcePropertySource
      }
    }
  }
}

Edit: pas vraiment besoin de tout ça. Comme l'a déjà répondu Selim, l'activation des journaux appropriés fait l'affaire

log4j.logger.org.springframework.core.env.MutablePropertySources=DEBUG

3
sidgate 23 déc. 2015 à 12:35

Ces informations sont déjà enregistrées par StandardServletEnvironment . Vous pouvez définir le niveau de journalisation sur DEBUG pour la classe org.springframework.web.context.support.StandardServletEnvironment pour afficher les détails dans vos journaux.

Si vous utilisez spring-boot, vous pouvez simplement ajouter la ligne suivante dans votre fichier application.properties.

logging.level.org.springframework.web.context.support.StandardServletEnvironment = DEBUG
2
Selim Ok 23 déc. 2015 à 12:27