Skip to main content

dawdler-config-center-core

模块介绍

统一配置中心核心模块.

1. FieldConfig注解

FieldConfig用于支持配置的类中的全局变量上.

FieldConfig 源码:

@Retention(value = RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.FIELD })
public @interface FieldConfig {
//配置中心的path 如 consul的path
String path();
//表达式 如 name 或 user.username 注意这里和SPEL不同,采用的Jexl来实现.
String value() default "";

}

FieldConfig的使用的示例:

consul中的path为:orderConfig

yml文件内容

order:
payOutTime: 3000
queueName: orderChangeStatusQueue

controller中配置:

@RequestMapping(value="/order")
public class OrderController{

@RemoteService
OrderService orderService;

@FieldConfig(path="orderConfig",value = "order.queueName")
private String queueName

另一个示例:

支持多层,同时也支持实体bean映射.

order:
queueName: orderChangeStatusQueue
payConfig:
payOutTime: 3000
payKey: UFFSA32FJJFJF
 @FieldConfig(path="orderConfig",value = "order.payConfig.payKey")
private String payKey

2. 其他配置中心扩展

如需要扩展其他配置中心,如zookeeper,apollo等等,需要实现ConfigClient接口,并通过SPI方式进行接入.


public interface ConfigClient {

void init(Map<String, Object> conf);

void start();

void stop();

String type();

}

具体参考ConsulConfigClient来实现即可,如果在扩展其他配置中心的时遇到困难可以提ISSUES.