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

朱雀 2024-04-18 20:14 111阅读 0赞

640?wx\_fmt=gif

学习更多Java干货,戳上面的

蓝色字题

关注我!

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

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

  1. kafka:
  2. brokerAddress: 110.35.113.62:9092,123.27.143.72:9095,180.17.133.52:9096
  3. smsTopic: testTopic
  4. smsCosumeGroup: testTopicGroup
  5. timerTaskTopic: timerTopic
  6. timerTaskGroup: timerGroup
  7. jvmNumbers: 3
  8. security:
  9. authentication:
  10. jwt:
  11. secret: 0550224055e1848081dba46d8ad325f503fa141b
  12. tokenValidityInSeconds: 86400

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

1

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

  1. @ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)
  2. public class ApplicationProperties1 {
  3. private final Security security = new Security();
  4. private final Kafka kafka = new Kafka();
  5. public static class Kafka {
  6. private String brokerAddress;
  7. private String smsTopic;
  8. private String smsCosumeGroup;
  9. private String timerTaskTopic;
  10. private String timerTaskGroup;
  11. private String jvmNumbers;
  12. }
  13. public static class Security {
  14. private final Authentication authentication = new Authentication();
  15. public static class Authentication {
  16. private final Jwt jwt = new Jwt();
  17. public static class Jwt {
  18. private String secret;
  19. private long tokenValidityInSeconds;
  20. }
  21. }
  22. }
  23. }

2

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

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

  1. @Configuration
  2. @ConfigurationProperties(prefix = "kafka",ignoreUnknownFields = false)
  3. @PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false)
  4. public class ApplicationProperties {
  5. private String brokerAddress;
  6. private String smsTopic;
  7. private String smsCosumeGroup;
  8. private String timerTaskTopic;
  9. private String timerTaskGroup;
  10. private String jvmNumbers;
  11. }

而Security的配置这样来

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

补充

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

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

结语

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

640?wx\_fmt=gif

推荐阅读

  • Java进阶路线
  • 无套路免费技术干货

640?wx\_fmt=jpeg

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

640?wx\_fmt=gif

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读