2015-11-19 125 views
3

我们的操作人员希望在应用程序启动时将Spring启动配置(即所有属性)转储到日志文件。我认为这可以通过注释@ConfigurationProperties属性并打印它们来完成。转储弹簧启动配置

问题是,是否有更好的或内置的机制来实现这一点。

鉴于除此之外似乎还没有内置解决方案,所以我尝试着自己做。这是我想出的:

@Component 
public class ConfigurationDumper { 


    @Autowired 
    public void init(Environment env){ 
     log.info("{}",env); 
    } 

} 

这样做的挑战是,它不会打印在我的application.yml中的变量。相反,这里是我得到:

StandardServletEnvironment 
{ 
    activeProfiles=[], 
    defaultProfiles=[default], 
    propertySources=[ 
     servletConfigInitParams, 
     servletContextInitParams, 
     systemProperties, 
     systemEnvironment, 
     random, 
     applicationConfig: [classpath: /application.yml] 
    ] 
} 

我怎样才能解决这个问题,从而已经加载,并且打印所有属性?

回答

2

如果使用actuatorenvendpoint会给你所有ConfigurableEnvironment设置的配置属性和configprops会给你的@ConfigurationProperties名单,但没有在日志中。

看看在source codeenv端点,可能是它会给你的,你怎么能得到所有你感兴趣的性质的想法。

2

没有内置的机制,它真的取决于“所有属性”的含义。你只想要你写的或者你想要的所有属性(包括默认值)。

对于前者,您可以轻松收听ApplicationEnvironmentPreparedEvent并记录您感兴趣的财产来源。对于后者,/configprops确实是一个更好/完整的输出。