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

640?wx_fmt=gif
学习更多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还会担心你的代码臃肿么。

640?wx_fmt=gif

推荐阅读

640?wx_fmt=jpeg

 点赞收藏转发好看再走呗!

640?wx_fmt=gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值