x7框架demo
前几天在一个QQ技术群里,有人推荐了x7框架,pull下来试试,有些特点。
1. x7-reyc和feign框架的编程模型一样, 底层是resilience4j,完全脱离了spring cloud, 更适合k8s。附上例子:
@ReyClient(value = "127.0.0.1:8868", circuitBreaker = "", retry = true, fallback = TestFallback.class)
public interface TestServiceRemote {
/**
* 参数io.xream.x7.reyc.Url, 优先配置的http://127.0.0.1:8868/xxx/recy/test
*/
@RequestMapping(value = "/xxx/reyc/test")
Boolean test(CatRO ro, Url url);
@RequestMapping(value = "/xxx/reyc/test")
Boolean testFallBack(CatRO ro);
@RequestMapping(value = "/xxx/time/test", method = RequestMethod.GET)
Boolean testTimeJack();
}
public class TestFallback {
public void testFallBack(CatRO ro){
/*
* send to kafka
*/
System.out.println("fallBack");
}
public void test(CatRO ro, Url url){
/*
* send to kafka
*/
System.out.println("fallBack with Url");
}
}
已经完全脱离spring cloud, 如果不用istio等service mesh框架,x7-reyc是个很好的选择。
2. x7-repo, 这是个简单的orm框架,整合了spring boot + sqli,这个orm框架比较简单,但不是很全面,例子如下:
CriteriaBuilder.ResultMapBuilder builder = CriteriaBuilder.resultMapBuilder();
builder.resultKey("c.id").resultKey("c.dogId","c_id");
builder.or().eq("d.petId", 0);
builder.or().lt("c.time",System.currentTimeMillis());
builder.and().in("c.dogId", Arrays.asList(0));
builder.sourceScript("catTest c LEFT JOIN dogTest d on c.dogId = d.id");
builder.resultWithDottedKey();
Criteria.ResultMapCriteria resultMapped = builder.build();
Page<Map<String, Object>> page = repository.find(resultMapped);
用起来简单,但不适合复杂的SQL. 更多的例子还是去github上找, github地址: https://github.com/x-ream/x7
从github上pull下demo,发现整个框架依赖spring boot; 要是项目没用spring boot,就得自己整合io.xream.sqli项目, 这个整合
还是很麻烦的。