如何记录Spring加载的属性?

La *_*lle 12 spring

是否可以简单地记录spring加载的属性文件的所有内容<context:property-placeholder />

谢谢

小智 11

您可以将日志级别设置org.springframework.core.env.PropertySourcesPropertyResolver为"debug".然后,您将能够在解析期间看到属性的值.

  • 更新:不再适用.请参阅http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/PropertySourcesPropertyResolver.html#logKeyFound-java.lang.String-org.springframework.core.env .PropertySource-java.lang.Object-读取`从4.3.3开始,这不再记录该值以避免意外记录敏感设置. (6认同)

mre*_*isz 2

你可以这样做:

<context:property-placeholder properties-ref="myProperties"/>

<bean id="myProperties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="locations">
    <list>
      .. locations
    </list>
  </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

并添加一个类似于下面的日志记录 bean(此处基于注释并使用 slf4j api):

@Component
public class PropertiesLogger {
  private static Logger logger = LoggerFactory.getLogger(PropertiesLogger.class);

  @Resource("myProperties")
  private Properties props;

  @PostConstruct
  public void init() {
    for (Map.Entry<Object, Object> prop : props.entrySet()) {
      logger.debug("{}={}", prop.getKey(), prop.getValue());
    }
  }
}
Run Code Online (Sandbox Code Playgroud)