springboot源码分析6-springboot之PropertySource类初探

简介: 摘要:本小节重点梳理一下PropertySource类的相关结构以及职责,本文的学习前提是学习了springboot源码分析5-springboot之命令行参数以及原理一文。

摘要:本小节重点梳理一下PropertySource类的相关结构以及职责,本文的学习前提是学习了springboot源码分析5-springboot之命令行参数以及原理一文。

springboot源码分析5-springboot之命令行参数以及原理一文中,我们看到了实例化Source类的时候,会去先实例化其父类SimpleCommandLinePropertySource。SimpleCommandLinePropertySource类的构造函数中直接解析了命令行参数以及值,然后返回封装好的CommandLineArgs实例对象。SimpleCommandLinePropertySource类的构造函数中会继续调用其父类CommandLinePropertySource,CommandLinePropertySource继续调用其父类EnumerablePropertySource,EnumerablePropertySource继续调用其父类PropertySource。PropertySource类是一个抽象基类。

1.1. PropertySource

PropertySource类是一个抽象类,代码如下:

1 public abstract class PropertySource<T> {

2  protected final String name;

3  protected final T source;

4 }

getSource()方法:这个方法会返回得到属性源的源头。比如MapPropertySource的源头就是一个MapPropertiesPropertySource的源头就是一个Properties

name:我们可以理解为一个map中的key

PropertySource类的继承结构图如下图所示:

 

l RandomValuePropertySourcesourcerandom

l ServletConfigPropertySourcesourceServletConfig

l ServletContextPropertySourcesourceServletContext

l JndiPropertySourcesourceJndiLocatorDelegate

l StubPropertySourcesourceObject

l MapPropertySourcesourceMap<String, Object>

本文内容暂时讲解道这里,后面的文章中讲解环境变量的时候,再来一个个的看这些PropertySource子类。

未知参数最终被添加到了nonOptionArgs集合。

讲解到这里基本上命令行参数的设置以及解析原理都搞明白了。


欢迎关注我的微信公众号,第一时间获得博客更新提醒,以及更多成体系的Java相关原创技术干货。 
扫一扫下方二维码或者长按识别二维码,即可关注。
 


相关文章
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的新闻类网站的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的新闻类网站的详细设计和实现(源码+lw+部署文档+讲解等)
|
3月前
|
Java API Spring
springBoot:注解&封装类&异常类&登录实现类 (八)
本文介绍了Spring Boot项目中的一些关键代码片段,包括使用`@PathVariable`绑定路径参数、创建封装类Result和异常处理类GlobalException、定义常量接口Constants、自定义异常ServiceException以及实现用户登录功能。通过这些代码,展示了如何构建RESTful API,处理请求参数,统一返回结果格式,以及全局异常处理等核心功能。
|
3月前
|
JSON 缓存 前端开发
SpringBoot的 ResponseEntity类讲解(具体讲解返回给前端的一些事情)
本文讲解了SpringBoot中的`ResponseEntity`类,展示了如何使用它来自定义HTTP响应,包括状态码、响应头和响应体,以及如何将图片从MinIO读取并返回给前端。
191 3
|
3月前
|
Java Spring 容器
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
这篇文章讨论了在Spring Boot 3.2.1版本中,同名同类型的bean和@Service注解类之间冲突的问题得到了解决,之前版本中同名bean会相互覆盖,但不会在启动时报错,而在配置文件中设置`spring.main.allow-bean-definition-overriding=true`可以解决这个问题。
126 0
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
|
6月前
|
Java Spring
idea新建spring boot 项目右键无package及java类的选项
idea新建spring boot 项目右键无package及java类的选项
256 5
|
6月前
|
Java 数据库连接 mybatis
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
|
7月前
|
Java 应用服务中间件 Maven
Springboot入门基础知识详解 parent starter 引导类 辅助功能
Springboot入门基础知识详解 parent starter 引导类 辅助功能
63 2
|
7月前
|
Java
springboot Test 测试类中如何排除一个bean类
springboot Test 测试类中如何排除一个bean类
181 0
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络类课程思政学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络类课程思政学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
8月前
|
安全 Java 测试技术
Spring Boot 自动化单元测试类的编写过程
企业开发不仅要保障业务层与数据层的功能安全有效,也要保障表现层的功能正常。但是我们一般对表现层的测试都是通过postman手工测试的,并没有在打包过程中代码体现表现层功能被测试通过。那么能否在测试用例中对表现层进行功能测试呢?答案是可以的,我们可以使用MockMvc来实现它。
114 0