An open API service indexing awesome lists of open source software.

https://github.com/houkx/disconf-client

简洁而强大的spring配置工具
https://github.com/houkx/disconf-client

config disconf spring

Last synced: 9 months ago
JSON representation

简洁而强大的spring配置工具

Awesome Lists containing this project

README

          

# disconf-client
简洁而强大的spring配置工具
* 代码量大约只有原作者的1/10, 没有繁琐的二次扫描啥的.
* 解决了几个bug, 比如debug=true时断线就不重连,莫名其名的断线等.
* 支持json和 * 通配符配置
* 配置更简洁, 业务代码无侵入, 只需要关注原生spring @Value注解
* 配置变更后自动修改@Value注解的字段,和自动调用@Value注解的setter方法
* 即使不使用disconf也能使用框架的接口主动修改配置

``` properties
# settings.properties
app.title=someGame
app.tags=["play","war"]
app.user.hobby.lilei=fishing
app.user.hobby.HanMeimei=reading
```
-----------------------------------------------------------------------
```xml







settings.properties
log4j2.xml


```
---------------------------------------------------------------------------------------
``` xml

```
---------------------------------------ConfigTest_.java------------------------------------------------
```java
package test.spring;

import io.disconf.client.DisConfPropertyConfigurer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import test.spring.base.Configs;

import java.util.Properties;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:disconf.xml", "classpath:app-test.xml"})
public class ConfigTest_ {

@Autowired
Configs configs;

@Autowired
DisConfPropertyConfigurer disConfPropertyConfigurer;

@Test
public void test_config() {
System.out.println("configs = " + configs);

Properties properties = new Properties();
properties.put("app.title", "myApp");
properties.put("app.title", "myApp");
properties.put("app.user.hobby.NewResetUser", "WriteBug");
// when use disconf, this method is auto invoke when Config Changed
// 当使用disconf时,这个方法是自动调用的; 由于第一个参数传的是null, 所以这里是重置
disConfPropertyConfigurer.changeBeanProperties(null, properties);

System.out.println("** After Refresh:\nconfigs = " + configs);
}

}
```
-------------------------------------Configs.java--------------------------------------------------
``` java
package test.spring.base;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.Map;

@Component
public class Configs {
@Value("${app.tags:[]}")
public String[] tags;
public String title;

public Map userHobby;

@Value("${app.title}")
public void setTitle(String title) {
this.title = title;
}

@Value("${app.user.hobby.*}")
public void setUserHobby(Map userHobby) {
this.userHobby = userHobby;
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Configs{");
sb.append("tags=").append(Arrays.toString(tags));
sb.append(", title='").append(title).append('\'');
sb.append(", userHobby=").append(userHobby);
sb.append('}');
return sb.toString();
}
}

```