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

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/81750872 我们都知道平常在使用SpringBoot和SpringCloud的时候,如果需要加载一两个配置文件的话我们通常使用@Value("${属性名称}")注解去加载。
版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/81750872

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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方法,实际使用过程中请自行添加)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@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的配置可以这样来

1
2
3
4
5
6
7
8
9
10
11
12
@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的配置这样来

1
2
3
4
5
6
7
8
9
@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还会担心你的代码臃肿么。

本文出自http://zhixiang.org.cn,转载请保留。

相关文章
|
18天前
|
Java 调度 Spring
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
38 0
|
2月前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
304 6
|
1月前
|
消息中间件 Cloud Native Java
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
|
1月前
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
403 0
|
7天前
|
Java
Java配置大揭秘:读取自定义配置文件的绝佳指南
Java配置大揭秘:读取自定义配置文件的绝佳指南
11 0
Java配置大揭秘:读取自定义配置文件的绝佳指南
|
17天前
|
开发框架 负载均衡 Java
Spring boot与Spring cloud之间的关系
总之,Spring Boot和Spring Cloud之间的关系是一种构建和扩展的关系,Spring Boot提供了基础,而Spring Cloud在此基础上提供了分布式系统和微服务架构所需的扩展和工具。
16 4
Spring boot与Spring cloud之间的关系
|
1月前
|
传感器 人工智能 监控
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
30 0
|
1月前
|
人工智能 负载均衡 Java
【Spring实战】动手拥有自己的ai小站!使用Springboot整合Spring Cloud Gateway实现对接open ai并实现令牌记量和限制对话次数
【Spring实战】动手拥有自己的ai小站!使用Springboot整合Spring Cloud Gateway实现对接open ai并实现令牌记量和限制对话次数
|
2月前
|
XML Java API
Spring Boot 和 Spring Cloud: 区别与联系
在现代企业级应用开发中,Spring Boot 和 Spring Cloud 是两个非常流行的项目。它们通常被用于构建和部署微服务架构的应用。尽管它们属于同一个大家族 —— Spring,但它们的设计目标和应用场景有所不同。本文将探讨 Spring Boot 和 Spring Cloud 的基本区别和它们之间的联系。
80 9
|
存储 缓存 安全
一文带你了解Java Class的生命周期(类加载过程)
一文带你了解Java Class的生命周期(类加载过程)
126 0
一文带你了解Java Class的生命周期(类加载过程)