เอจีเมอร์จ
กรอบการรวมข้อมูลคลาวด์คลาวด์สปริง
แก้ปัญหา
แก้ปัญหาความเจ็บปวดของการแยกคุณสมบัติของข้อมูลเพจหลังจากแยกบริการคลาวด์สปริงหรือคุณลักษณะของวัตถุแต่ละชิ้น รองรับการฉีดอัตโนมัติและการแปลงคุณลักษณะข้อมูลแบบคงที่ (พจนานุกรมข้อมูล) และข้อมูลคีย์หลักแบบไดนามิกซึ่งข้อมูลคงที่รวมจะถูกเก็บไว้ในระดับแรกผสม (Guava)
ใช้เกาลัด:
สองบริการตารางในบริการ A ใช้ค่าของตารางในบริการ B เมื่อเราสอบถามตารางในบริการ A เรารวมค่าของตารางในบริการ B ในกระบวนการค้นหาของบริการ A.
ตัวอย่าง
สำหรับรหัสตัวอย่างเฉพาะคุณสามารถดูโมดูล Ace-Merge-Demo
| -------- ศูนย์ทะเบียน Ace-Eureka | -------- ข้อมูลการสืบค้น Ace-Data-Merge-Demo, ตัวอย่างการรวมที่นี่ | -------- ผู้ให้บริการข้อมูล Ace-Data-Provider
Maven เพิ่มการพึ่งพา
<Ederency> <sderctId> com.github.wxiaoqi </groupId> <ratifactid> ace-merge-core </artifactid> <sersion> 2.0-snapshot </version>
การกำหนดค่าคลังสินค้าที่แนะนำ
<Epositories> <ที่เก็บ> <id> oss </id> <name> oss </name> <url> https://oss.sonatype.org/content/groups/public </url> </repository>
เริ่มคำอธิบายประกอบชั้นเรียน
@EnableAcemerge
การกำหนดค่า application.yml
# ข้อมูลข้ามบริการผสานรวม: เปิดใช้งาน: จริง guavacachenummaxsize: 1,000 guavacacherefreshwriteTime: 10 # min guavacacherefreshthreadpoolsize: 10 AOP: # จะเริ่มคำอธิบายประกอบโดยอัตโนมัติ
ตัวอย่างโค้ด (ข้อมูลของวัตถุ @Mergefield Flag ต้องรวมกัน)
@Retention (RetentionPolicy.runtime) @Target (value = {ElementType.Method, ElementType.type, ElementType.field}) สาธารณะ @interface Mergefield { / *** ค่าการสืบค้น* @return* / String Key () ""; ";"; "; / *** คลาสเป้าหมาย* @return*/ คลาส <? ขยายวัตถุ> feign () วัตถุเริ่มต้น class; / *** วิธีการโทร* @return*/ method String () ค่าเริ่มต้น ""; / *** ว่าจะรวมค่าแอตทริบิวต์เป็นค่าการสืบค้น* @return*/ บูลีน isvalueneedMerge () ค่าเริ่มต้นที่ผิดพลาด;} วัตถุรวม
ผู้ใช้ระดับสาธารณะ {ชื่อสตริงส่วนตัว; // แอตทริบิวต์ที่ต้องการการรวม @MergeField (key = "test", feign = iservice2.class, method = "writeLog") String Sex ส่วนตัว; // แอตทริบิวต์ที่ต้องใช้การรวม @MergeField (feign = iservice2.class, method = "getCitys", isValueneedMerge = true) เมืองสตริงส่วนตัว; ผู้ใช้สาธารณะ (ชื่อสตริง, String Sex, String City) {this.name = name; this.sex = เพศ; this.city = เมือง; } Public String getCity () {Return City; } โมฆะสาธารณะ setCity (String City) {this.city = City; } ผู้ใช้สาธารณะ (ชื่อสตริง) {this.name = name; } ผู้ใช้สาธารณะ (ชื่อสตริง, String sex) {this.name = name; this.sex = เพศ; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } Public String getSex () {return sex; } โมฆะสาธารณะ setsex (String sex) {this.sex = sex; - วิธีการรวมแหล่งข้อมูล (ตัวอย่างคือผ่าน feignclient หรืออาจเป็นวัตถุถั่วสปริงในท้องถิ่น)
ข้อกำหนดพิเศษ: พารามิเตอร์รายการจะต้องเป็นสตริงและค่าที่ส่งคืนจะต้องเป็นแผนที่ <สตริงสตริง> องค์ประกอบของค่าส่งคืนเป็นคีย์และค่าที่สอดคล้องกันของแอตทริบิวต์วัตถุรวม
@FeIgnClient ("ทดสอบ") ส่วนต่อประสานสาธารณะ iservice2 {@requestmapping ("car/do") แผนที่สาธารณะ <สตริง, สตริง> writeLog (ทดสอบสตริง); @RequestMapping ("Car/City") แผนที่สาธารณะ <String, String> GetCitys (String ids);}อินเทอร์เฟซบริการระยะไกลที่สอดคล้องกัน
/** * @author ace * @create 2017/11/20 */@restcontroller@requestmapping ("Car") คลาสสาธารณะ Service2Rest {Private Logger Logger = loggerFactory.getLogger (Service2Rest.Class); @RequestMapping ("ทำ") แผนที่สาธารณะ <สตริงสตริง> writeLog (ทดสอบสตริง) {logger.info ("บริการ 2 คือการเขียนบันทึก!"); แผนที่ <สตริงสตริง> แผนที่ = ใหม่ hashmap <สตริงสตริง> (); map.put ("man", "male"); map.put ("ผู้หญิง", "หญิง"); แผนที่กลับ; } @RequestMapping ("เมือง") แผนที่สาธารณะ <สตริง, สตริง> getCity (รหัสสตริง) {logger.info ("บริการ 2 คือการเขียนบันทึก!"+ids); แผนที่ <สตริงสตริง> แผนที่ = ใหม่ hashmap <สตริงสตริง> (); map.put ("1", "กวางโจว"); map.put ("2", "Wuhan"); แผนที่กลับ; - คลาส Biz ที่รวมวัตถุ (วิธีการต่อไปนี้คือการใช้คำอธิบายประกอบการสแกน AOP)
@service @slf4jpublic userbiz {@autowired ส่วนตัว Mergecore Mergecore; / ** * วิธีการรวมของคำอธิบายประกอบ AOP * ค่าส่งคืนของวิธีการรวมต้องเป็นรายการ * หากเป็นวัตถุที่ซับซ้อนคุณต้องปรับแต่งตัวแยกวิเคราะห์การรวมตัวของคุณเอง arraylist <ผู้ใช้> (); สำหรับ (int i = 1000; i> 0; i--) {users.add (ผู้ใช้ใหม่ ("จาง" + i, "man", "1")); users.add (ผู้ใช้ใหม่ ("lisi" + i, "ผู้หญิง", "2")); users.add (ผู้ใช้ใหม่ ("Wangwu" + i, "unkonwn", "2")); } ผู้ใช้ที่ส่งคืน; } / *** วิธีการรวมด้วยตนเอง* @return* / รายการสาธารณะ <ผู้ใช้> getUser () {arrayList <ผู้ใช้> ผู้ใช้ = ใหม่ ArrayList <ผู้ใช้> (); สำหรับ (int i = 1000; i> 0; i--) {users.add (ผู้ใช้ใหม่ ("จาง" + i, "man", "1")); users.add (ผู้ใช้ใหม่ ("lisi" + i, "ผู้หญิง", "2")); users.add (ผู้ใช้ใหม่ ("Wangwu" + i, "unkonwn", "2")); } ลอง {// รายการการรวม Mergecore.mergeresult (user.class, ผู้ใช้); // การรวมวัตถุเดียว // mergecore.mergeone (user.class, users.get (0)); } catch (exception e) {log.error ("การรวมข้อมูลล้มเหลว", e); } ในที่สุด {return users; -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น