# java-lessons **Repository Path**: rwby123456/java-lessons ## Basic Information - **Project Name**: java-lessons - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-17 - **Last Updated**: 2021-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 第三周作业 代码分支: week-03 作业是模仿老师的架构,依葫芦画瓢自己重新写了一遍,所以总体上代码会有些许出入,但是大体相同。 ## 功能 ### 调整项目结构 - 单独把 configuration 作为一个单独的 module。 ### 实现 Microprofile config API。 #### 实现 - 配置源 microprofile ConfigSource 的实现。 - pers.cocoadel.configuration.sources.adapter.ConfigSourceAdapter:实现 microprofile ConfigSource 和 apache commons Configuration 之间的适配。 - pers.cocoadel.configuration.sources.adapter.DefaultConfigSourceProvider:基于 ConfigSourceAdapter,提供不同的配置来源的实现(优先级由 低 到 高)。 - OS 环境变量配资源 - System#getProperty 配资源 - PropertiesFile 配置源 - 数据类型转换接口 Converter 的实现: - pers.cocoadel.configuration.converters.adapter.ConverterAdapter:实现 Converter 和 apache commons 的 PropertyConverter 的适配。 - pers.cocoadel.configuration.converters.adapter.DefaultConverterProvider:基于 ConverterAdapter,提供 String 到不同数据类型转换的实现。 - pers.cocoadel.configuration.impl.ConfigImpl:实现 org.eclipse.microprofile.config.Config 接口,提供配置值的获取。 - pers.cocoadel.configuration.impl.ConfigBuilderImpl:构建 DefaultConfig 实例。 - pers.cocoadel.configuration.impl.ConfigProviderResolverImpl:microprofile configuration 会通过 spi 自动加载 ConfigProviderResolver 实现,所以这是 configuration 模块启动入口。 #### 测试 - 可以添加系统环境变量 、-D参数 或者在 META-INF\microprofile-config.properties 文件中添加 application.name 配置参数,它们优先级由低到高。 - META-INF\microprofile-config.properties 默认有值,如果需要使用 -D 需要删除其下的值。 - 通过下面 jolokia 暴露的 自定义的 MXBean 查看 - 实现属性变化监听 - pers.cocoadel.configuration.listener.ConsoleListener:监听到属性变化会把变化的内容输出在控制台。 ### 自定义 MXBean - 通过自定义 MXBean 暴露 上面所有/部分的配置属性。 - 接口:pers.cocoadel.user.platform.management.ApplicationManagerMBean - 实现:pers.cocoadel.user.platform.management.ApplicationManager - 通过 jolokia 暴露上面的 MxBean - 读取:http://localhost:8080/jolokia/read/pers.cocoadel.user.platform.config.application.management:type=application - 通过 jolokia 修改上面的 的MXBean的属性,是否能触发上面属性变化的监听。 - 修改:http://localhost:8080/jolokia/write/pers.cocoadel.user.platform.config.application.management:type=application/ApplicationName/新的值 - 修改成功后会触发属性变化监听器:输出变化的内容输出在控制台。 - 修改成功后可以登录首页查看 applicationName 的新值,也可以通过上面 jolokia 的连接读取。 - 目前发现只有 文件配置源 PropertiesConfiguration 能修改成功。所以需要文件配置了application.name 才能修改成功。 - System 和 OS 环境变量会返回不支持该操作。