ConfigurableEnvironment

ConfigurableEnvironment

无论如何,我在程序中是否有通过Spring的@PropertySource批注加载的文件的完整路径。
我需要它显示在日志中,以便人们可以知道应用程序中正在使用哪个属性文件

最佳答案

尽管我不确定实例是否始终为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
      }
    }
  }
}

编辑:并不需要所有这些。正如Selim回答的那样,启用适当的日志可以解决问题
log4j.logger.org.springframework.core.env.MutablePropertySources=DEBUG

07-24 09:25