ag-merge
إطار تجميع بيانات SPRING CLOUR
حل المشكلة
حل آلام تقسيم خصائص بيانات الترحيل بعد تقسيم خدمة السحابة الربيعية أو سمات الكائنات الفردية. وهو يدعم الحقن التلقائي وتحويل سمات البيانات الثابتة (قاموس البيانات) وبيانات المفتاح الأساسي الديناميكي ، من بينها سيتم تخزين البيانات الثابتة المجمعة من المستوى الأول (الجوافة).
خذ كستناء:
خدمتان ، جدول في الخدمة A يستخدم قيمة جدول في الخدمة B. عندما نستفسر عن الجدول في الخدمة A ، نقوم بتجميع قيم الجدول في الخدمة B في عملية الاستعلام عن الخدمة A.
مثال
للحصول على رمز مثال محدد ، يمكنك رؤية وحدة ACE-MERGE-DEMO.
| -------- مركز التسجيل Ace-Eureka | -------- ACE-DATA-MERGE-DEMO ، مثال التجميع هنا | -------- ACE-DATA-PROVIDER PROVIDER
Maven يضيف التبعيات
<Rependency> <roupeD> com.github.wxiaoqi </rougeid> <intifactid> ace-merge-core </artifactId> <splection> 2.0-snapshot </version> </sependency>
تكوين المستودع الموصى به
<SpoSitories> <Sropository> <id> oss </id> <name> Oss </mame> <Url> https://oss.sonatype.org/content/groups/public </url> </ropository> </ropository> </repositories>
بدء شرح الفصل
enablecemerge
Application.YML التكوين
# دمج بيانات البيانات عبر الخدمة: ممكّن: جوافاكاتشينوماكسسيز: 1000 goavacacherefreshwriteTime: 10 # min goaavacacherefreshthrodpoolsize: 10 aop: # كيفية بدء التعليقات التوضيحية ، إجمالي التمكين تلقائيًا: True True: True
مثال رمز (بيانات كائن العلم mergefield يجب تجميعها)
repinention (attreentionpolicy.runtime) target (value = {elementType.Method ، elementType.type ، elementType.field}) public interface mergefield { / *** Query value* regurn* / string key () الافتراضي "؛ / *** فئة الهدف* @REGARN*/ CLASS <؟ يمتد الكائن> feign () الكائن الافتراضي. / *** طريقة الاتصال* return*/ string method () افتراضي "" ؛ / *** ما إذا كان يجب دمج قيم السمات كقيم استعلام* @RETURN*/ BOOLEAN ISVALUENEEDMERGE () false ؛} كائنات إجمالية
مستخدم الفئة العامة {اسم السلسلة الخاصة ؛ // السمات التي تتطلب التجميع mergefield (key = "test" ، feign = iservice2.class ، method = "writeLog") sex private string ؛ // السمات التي تتطلب التجميع mergefield (feign = iservice2.class ، method = "getCitys" ، isValueNeedMerge = true) string city ؛ المستخدم العام (اسم السلسلة ، سلسلة الجنس ، سلسلة المدينة) {this.name = name ؛ this.Sex = الجنس ؛ this.city = المدينة ؛ } السلسلة العامة getCity () {return City ؛ } public void setCity (String City) {this.city = City ؛ } المستخدم العام (اسم السلسلة) {this.name = name ؛ } المستخدم العام (اسم السلسلة ، سلسلة الجنس) {this.name = name ؛ this.Sex = الجنس ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } سلسلة عامة getSex () {return sex ؛ } public void setSex (سلسلة الجنس) {this.sex = sex ؛ }} طريقة مصدر البيانات الإجمالية (مثال من خلال FeignClient ، أو يمكن أن يكون كائن Bean Spring محلي)
المتطلبات الخاصة: يجب أن تكون معلمة الإدخال سلسلة ، ويجب أن تكون قيمة الإرجاع خريطة <String ، String>. تكوين قيمة الإرجاع هو المفتاح والقيمة المقابلة لسمة الكائن الإجمالي.
@dignclient ("test") الواجهة العامة iservice2 { @requestmapping ("car/do") الخريطة العامة <string ، string> writeLog (string test) ؛ requestmapping ("CAR/CITY") الخريطة العامة <string ، string> getCitys (معرفات السلسلة) ؛}واجهة الخدمة عن بُعد المقابلة
/** * Author Ace * Create 2017/11/20. */@restController@requestMapping ("Car") Service2Rest {private logger logger = loggerFactory.getLogger (service2rest.class) ؛ requestmapping ("do") الخريطة العامة <string ، string> writeLog (اختبار السلسلة) {logger.info ("Service 2 Is Log!") ؛ خريطة <string ، string> map = new hashmap <string ، string> () ؛ map.put ("man" ، "male") ؛ map.put ("امرأة" ، "أنثى") ؛ خريطة العودة } REquestMapping ("City") الخريطة العامة <string ، string> getCity (string ids) {logger.info ("Service 2 هي كتابة log!"+ids) ؛ خريطة <string ، string> map = new hashmap <string ، string> () ؛ map.put ("1" ، "Guangzhou") ؛ map.put ("2" ، "Wuhan") ؛ خريطة العودة }} فئة biz التي تجمع الكائنات (الطريقة التالية هي استخدام شرح مسح مسح AOP)
@service @slf4jpublic class userBiz {Auutowired private mergecore mergecore ؛ / ** * طريقة التجميع من التعليق التوضيحي AOP * يجب أن تكون قيمة الإرجاع لطريقة التجميع ، * إذا كانت كائنًا معقدًا ، فأنت بحاجة إلى تخصيص محلل التجميع الخاص بك (تنفيذ قائمة imergeresultsulser) ArrayList <Sether> () ؛ لـ (int i = 1000 ؛ i> 0 ؛ i--) {user.add (مستخدم جديد ("Zhangsan" + i ، "man" ، "1")) ؛ user.add (مستخدم جديد ("Lisi" + I ، "Woman" ، "2")) ؛ users.add (مستخدم جديد ("wangwu" + i ، "unkonwn" ، "2")) ؛ } إرجاع المستخدمين ؛ } / *** طريقة التجميع اليدوي* @REGARN* / قائمة عامة <Seter> getUser () {ArrayList <Sether> users = new ArrayList <Sether> () ؛ لـ (int i = 1000 ؛ i> 0 ؛ i--) {user.add (مستخدم جديد ("Zhangsan" + i ، "man" ، "1")) ؛ user.add (مستخدم جديد ("Lisi" + I ، "Woman" ، "2")) ؛ users.add (مستخدم جديد ("wangwu" + i ، "unkonwn" ، "2")) ؛ } جرب {// list argregation mergecore.mergeresult (user.class ، user) ؛ // تجميع كائن واحد // mergecore.mergeone (user.class ، user.get (0)) ؛ } catch (استثناء e) {log.error ("فشل تجميع البيانات" ، e) ؛ } أخيرًا {إرجاع المستخدمين ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.