首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Java类加载SpringBoot、SpringCloud配置文件

使用Java类加载SpringBoot、SpringCloud配置文件

作者头像
Java学习录
发布2019-04-18 15:39:44
5570
发布2019-04-18 15:39:44
举报
文章被收录于专栏:Java学习录Java学习录

我们都知道平常在使用SpringBoot和SpringCloud的时候,如果需要加载一两个配置文件的话我们通常使用@Value("${属性名称}")注解去加载。但是如果配置文件属性特别多的时候使用这种方式就显得特别的不友好了。

比如说,我们要加载下方这个名为application.yml的配置文件。

kafka:  brokerAddress: 110.35.113.62:9092,123.27.143.72:9095,180.17.133.52:9096
  smsTopic: testTopic  smsCosumeGroup: testTopicGroup
  timerTaskTopic: timerTopic  timerTaskGroup: timerGroup
  jvmNumbers: 3


  security:       authentication:          jwt:              secret: 0550224055e1848081dba46d8ad325f503fa141b              tokenValidityInSeconds: 86400

此时我们有两种方式来简化这个加载方式

1

这种方式呢,是同过层层嵌套的方式一层一层的按照配置文件属性的方式来进行注入的。大家只要把这个类跟上方提供的配置文件进行对比就会明白它的方式了。(注意,下方的所有属性因为篇幅问题没有增加get、set方法,实际使用过程中请自行添加)

@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)public class ApplicationProperties1 {
    private final Security security = new Security();
    private final Kafka kafka = new Kafka();
    public static class Kafka {        private String brokerAddress;        private String smsTopic;        private String smsCosumeGroup;        private String timerTaskTopic;        private String timerTaskGroup;        private String jvmNumbers;    }
    public static class Security {
        private final Authentication authentication = new Authentication();
        public static class Authentication {
            private final Jwt jwt = new Jwt();
            public static class Jwt {
                private String secret;
                private long tokenValidityInSeconds;                           }        }    }    }

2

这种方式就是以指定的配置前缀为依据去取配置(同上没有写get、set方法)

例如:kafka的配置可以这样来

@Configuration@ConfigurationProperties(prefix = "kafka",ignoreUnknownFields = false)@PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false)public class ApplicationProperties {            private String brokerAddress;        private String smsTopic;        private String smsCosumeGroup;        private String timerTaskTopic;        private String timerTaskGroup;        private String jvmNumbers;}

而Security的配置这样来

@Configuration@ConfigurationProperties(prefix = "security.authentication.jwt",ignoreUnknownFields = false)@PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false)public class ApplicationProperties {
    private String secret;
    private long tokenValidityInSeconds;}

补充

大家可能会注意到我上方的几个类中都没有写get和set方法,因为那个东西其实所占的篇幅实在是太长了。那么,有什么办法可以补救么,其实是有办法的,一个注解就可以全搞定哟。

什么?你不信,不信来看看呀:IDEA中使用lombok插件

结语

怎么样,学会这个以后Leader还会担心你的代码臃肿么。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1
  • 2
  • 补充
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档