mars-config是spring mvc 、springboot 动态配置系统。支持http 轮训方式、更新、动态配置。
mars-config 包含两种配置:
第一种是对 properties 的动态配置修改功能,节省了我们频繁部署上线去修改 properties 的值。
第二种是对一条或多条数据的配置系统,主要是针对数据量小的表集中通过 mars-config配置,节省了我们创建小表带来的工作量;通过mars-config 配置可以直接通过集成api 直接获取对应的数据,从而节省了我们的开发时间。
github:https://github.com/fashionbrot/mars-config 希望大家多多支持啊
#【后端系统】集群配置
mars.cluster.address=ip:port,ip2:port,ip3:port
#【后端系统】同步其他服务器重试次数(默认3)
mars.cluster.sync.retry=3
<!-- spring 引入 -->
<dependency>
<groupId>com.github.fashionbrot</groupId>
<artifactId>mars-spring-config</artifactId>
<version>2.0.0</version>
</dependency>
<!-- springboot or springcloud 引入 -->
<dependency>
<groupId>com.github.fashionbrot</groupId>
<artifactId>mars-config-springboot-starter</artifactId>
<version>2.0.0</version>
</dependency>
配置参数 | 配置说明 | 是否必填 |
---|---|---|
mars.config.app-id | 应用名称 | 必填 |
mars.config.env-code | 环境code | 必填 |
mars.config.server-address | server地址多个逗号分隔 | 必填 |
mars.config.listen-long-poll-ms | 客户端轮训毫秒数(默认30000) | 否 |
mars.config.enable-local-cache | 是否开启本地缓存默认false | 否 |
mars.config.local-cache-path | 本地缓存路径(默认user.home) | 否 |
mars.config.enable-error-log | 是否开启http轮询访问日志 | 否 |
package com.github.fashionbrot.springboot.config;
import com.github.fashionbrot.spring.config.annotation.EnableMarsConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Component
@Configuration
@EnableMarsConfig
public class SpringConfig {
}
(1)、【后端系统】应用环境管理 菜单 创建 应用、环境
(2)、【后端系统】配置管理 菜单 创建配置 点击发布,依赖 mars-spring-config 就会收到服务端修改内容
(3)、【客户端】通过 @MarsValue 获取动态配置的值 如同spring @Value 功能 autoRefreshed 表示是否自动更新当前值
@MarsValue(value = "${abc}",autoRefreshed = true)
private String abc;
(4)、【客户端】通过@MarsConfigurationProperties 注解把对应配置映射到 TestConfig 类中
如springboot @ConfigurationProperties 功能相似 @MarsProperty 读取配置key @MarsIgnoreField忽略abc字段配置
import MarsConfigurationProperties;
import MarsIgnoreField;
import MarsProperty;
import lombok.Data;
@Data
//aaa 对应【后端系统】里面的 文件名称
@MarsConfigurationProperties(fileName = "aaa",autoRefreshed = true)
public class TestConfig {
//修改字段的绑定名称
@MarsProperty("abc")
public String name ;
//忽略字段的绑定
@MarsIgnoreField
private String abc;
}
(5)、通过 @MarsConfigListener 监听文件变化,可根据需要使用
@MarsConfigListener(fileName = "aaa")
public void marsConfigListenerTest(String context){
System.out.print(context);
}
@MarsConfigListener(fileName = "aaa")
public void marsConfigListenerProperties(Properties properties){
System.out.print(properties.toString());
}
<!-- spring 引入 -->
<dependency>
<groupId>com.github.fashionbrot</groupId>
<artifactId>mars-spring-value</artifactId>
<version>0.1.0</version>
</dependency>
<!-- springboot or springcloud 引入 -->
<dependency>
<groupId>com.github.fashionbrot</groupId>
<artifactId>mars-value-springboot-starter</artifactId>
<version>0.1.0</version>
</dependency>
配置参数 | 配置说明 | 是否必填 |
---|---|---|
mars.value.app-id | 应用名称 | 必填 |
mars.value.env-code | 环境code | 必填 |
mars.value.server-address | server地址多个逗号分隔 | 必填 |
mars.value.listen-long-poll-ms | 客户端轮训毫秒数(默认10000) | 否 |
mars.value.enable-listen-log | 轮训日志是否开启 | 否 |
package com.github.fashionbrot.springboot.config;
import com.github.fashionbrot.value.config.annotation.EnableMarsValue;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Component
@Configuration
@EnableMarsValue
public class SpringConfigValue {
}
(1)、【后端系统】应用环境管理 菜单 创建 应用、环境
(2)、【后端系统】模板管理 创建模板(好比创建一个java类)、创建好模板在创建模板属性(如java类的 属性)
(3)、【后端系统】配置数据管理 新建就可以创建一条数据
(4)、【客户端】可配置获取的数据持久化到客户端的Class 类型
//需要继承 MarsTemplateKeyMapping 类实现 initTemplateKeyClass 方法
public class ConfigValueController extends MarsTemplateKeyMapping{
//系统启动加载方法
public Map<String,Class> initTemplateKeyClass() {
Map<String,Class> map=new HashMap<>();
//test 代表模板key
//TestModel.class 代表test 模板数据的class 类型
map.put("test", TestModel.class);
return map;
}
}
(5)【客户端】客户端获取 数据2中方式
@RequestMapping("get")
@ResponseBody
public Object test(String templateKey){
//通过 MarsConfigValueCache.getDeepTemplateObject 方式获取, templatekey 是模块key
//getDeepTemplateObject 方法是深度copy,不会污染上层数据
List<TestModel> list = MarsConfigValueCache.getDeepTemplateObject(templateKey);
if (CollectionUtil.isNotEmpty(list)){
for(TestModel t: list){
t.setTest(t.getTest()+"你好");
}
}
return list;
}
@RequestMapping("get3")
@ResponseBody
public List test3(String templateKey){
//通过 MarsConfigValueCache.getTemplateObject 方式获取, templatekey 是模块key
//getTemplateObject 浅copy,会污染上层数据
List list = MarsConfigValueCache.getTemplateObject(templateKey);
return list;
}
可通过 mars-test项目中的 springboot-test 参考使用demo
如有问题请通过 mars-issue 提出 告诉我们。我们非常认真地对待错误和缺陷,在产品面前没有不重要的问题。不过在创建错误报告之前,请检查是否存在报告相同问题的issues。
mars3d - Webpack打包教程 1、新建文件夹mars3d-webpack 2、初始化 npm,然后 在本地安装 webpack,接着安装 webpack-cli(此工具用于在命令行中运行 webpack) npm init -y //初始化项目 npm install webpack webpack-cli --save-dev //安装webpack 3、完成后在mars3d-w
本次更新如下: 取消了MarsMapping注解,Controller里的所有public方法会自动映射成一个http接口,默认请求方式为get 新增了RequestMethod注解,用来指定http接口的请求方式(不加默认为get) 将Resource注解换成了MarsWrite注解,用法保持不变(防止跟jdk自带的Resource混淆) 将redis模块从Mars-extends项目移到了主项
1. 使用npm安装依赖库 //安装mars3d主库 npm install mars3d --save //安装mars3d插件(按需安装) npm install mars3d-space --save //安装copy-webpack-plugin(!本插件在第3步中使用,根据webpack版本安装,不匹配的版本可能出错,这一步比较玄学,如果报错80%在这里) npm install
首先关于转载,只是为了自己学习备忘,请大家支持原博主:http://blog.csdn.net/ccf19881030/article/details/9042733 一、 pkg-config简介 1、关于pkg-config工具下面这篇博客有个简单的介绍,链接如下: 理解 pkg-config 工具 2、pkg-config软件官网:http://www.freedesktop.org/wik
useEffect不支持关键词async,原因是:使用async/await关键词,会返回一个promise,useEffect的返回也就是promise了。 解决办法: 在useEFfect中写一个异步函数,并调用它。 useEffect(() => { const fetchData = async () => { const response = await fetch(
jgeojson图层的使用: 常规的geojson图层加载-有对应的url即可; const geoJsonLayer= new mars3d.layer.GeoJsonLayer({ id: "可以根据此id在其他地方获取该图层", url: "对应geojson的url", symbol: { type: "polyline", // geojson内加载的
4.1 根据条件的自动配置 @conditional是基于条件的自动配置,一般配合Condition接口一起使用,只有接口实现类返回true,才装配,否则不装配. 用实现了Condition接口的类传入@Conditional中 @Conditional可以标记在配置类的方法中,也可以标记在配置类上.标记的位置不同,作用域不同. @Conditional可以传入多个实现了condition接口的类
cmf_set_dynamic_config($data) 功能 设置动态配置 参数 $data: array 要设置的数据,格式["cmf_default_theme"=>'simpleboot3'] 返回 boolean
[命名空间: Serenity, 程序集: Serenity.Core] 这是访问配置设置的主要位置。它包含注册 IConfigurationRepository 提供者的快捷方法。 public static class Config { public static object Get(Type settingType); public static TSettings Get
Envoy架构支持多种的配置管理方法。采用哪种部署方法,取决于需求实现者。可以采用全静态的配置方式,实现简单的部署。更复杂的动态部署,需要采用更复杂的动态配置,需要基于实现者提供一个或多个外部REST的配置API。本文档概述了可用的配置选项。 全量参考配置 安装参考配置 Envoy v2 API概述 术语 SDS(Service Discovery Service) EDS(Endpoint Di
cmf_set_dynamic_config($data) 功能 设置动态配置 参数 $data: array 要设置的数据,格式['template' => ['cmf_default_theme' => 'default']] 返回 boolean
<dependencyManagement> <dependencies> <dependency> <!--Import dependency management from SpringBoot--> <groupId>org.springframework.boot</groupId>
V1.1.1新增 <?php $data=array("URL_HTML_SUFFIX"=>".html"); $result=sp_set_dynamic_config($data); ?>
本文向大家介绍浅谈springboot自动配置原理,包括了浅谈springboot自动配置原理的使用技巧和注意事项,需要的朋友参考一下 从main函数说起 一切的开始要从SpringbootApplication注解说起。 其中最重要的就是EnableAutoConfiguration注解,开启自动配置。 通过Import注解导入AutoConfigurationImportSelector。在这