الربيع + فايربيرد + الراحة. جزء 1 تكوين المشروع

بدلا من الانضمام


إذا كنت تقوم بتحليل شيء ما ، فحاول وصفه بلغة واضحة وابحث عن شخص سيقرأ تعليقاته ويلقيها (أعيد صياغتها على ر. فينمان ، لكن نعم فعلت ذلك).
كل التعليقات ، حتى الشريرة في اسلوب "نعم ، هذا ~ أبيض ~~ الناس يسمح لنفسه "موضع ترحيب.


الأهداف


التطبيقات - عرض تقارير حول تقدم المنتج (المقاييس) ، إن أمكن ، مع توزيع هذه البيانات عبر الشبكة داخل المؤسسة (للوظائف) ؛
الشخصية - فهم القليل من تكنولوجيا الربيع


التكنولوجيا


  • شبكة الربيع
  • الربيع jpa
  • لومبوك
    • زعتر
  • SpringFox Swagger (سأختبر الراحة عليه)
  • jaybird-jdk17 ، الإصدار 3.0.5
  • مخضرم

الدافع الدافع الربيع + فايربيرد


في الآونة الأخيرة ، تم إنشاء أول عميل ضمن Linux Mint لمشغل Ovsezavod ولم يكن عرض التقارير من Wine كافياً دائمًا. (كل شيء آخر يعمل بشكل جيد - التصور Qt - SCADA ، Java SE المحفوظات).


بعض أشعل النار التي كان لا بد من صعدت


  1. تبعيات جاكسون من إصدارات مختلفة (ثابتة) ،
  2. firebird لم يتم تعيين نوع الترميز يؤدي إلى الافتراضي (ق) لا شيء ،

رابط إلى بوابة في نهاية المنشور.


جاكسون وجميع الكل


المكونات المختلفة تشديد جاكسون من إصدارات مختلفة ، لأنه غير سارة ، فمن الضروري إصلاحه.
كشفت من قبل الفريق


mvn dependency:tree -Dincludes=com.fasterxml.jackson.core +- org.springframework.boot:spring-boot-starter-web:jar:2.1.0.RELEASE:compile [INFO] | \- org.springframework.boot:spring-boot-starter-json:jar:2.1.0.RELEASE:compile [INFO] | \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.7:compile [INFO] \- io.springfox:springfox-swagger2:jar:2.7.0:compile [INFO] \- io.swagger:swagger-models:jar:1.5.13:compile [INFO] \- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.5:compile 

نصلح في بوم.


  <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.7</version> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </exclusion> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.7</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.7</version> </dependency> 

تصحيح ، تقريبا. اتضح. إذا كنت تستخدم IDEA ، فمن الأسهل رؤية المكتبات الخارجية . أن هناك كل التبعيات وهم الإصدارات الصحيحة.


هيكل التطبيق العام


لست على دراية باختبار الإقلاع الربيعي للتطبيق ، لذلك سأفعل ذلك بدون اختبارات
("نعم ، لون البشرة # يسمح لنفسه").


تكوين التطبيق


بما أنني مطور متمرس ، وبالتالي لست على دراية بالطرق الثابتة ، سأقوم بما يلي:


  1. في application.yml (أثناء إعداد اتصال قاعدة البيانات)
     spring: datasource: driver-class-name: org.firebirdsql.jdbc.FBDriver url: jdbc:firebirdsql://host:3050//work/cmn/db/namedb.fdb?sql_dialect=3&charSet=utf-8 username: ****** password: ****** useUnicode: true characterEncoding: UTF-8 sql-script-encoding: UTF-8 jpa: show-sql: true 
  2. باستخدام التعليقات التوضيحية مباشرة في الفصول الدراسية:

إذا لم تحدد charSet = utf-8 ، فسيكون القيمة الافتراضية هي NONE : في حالة أن الجداول بها أيضًا NONE ، فسنحصل على أحرف غير قابلة للقراءة أو ، وفقًا لـ firebirdsql.org:


 3.2.4 How can I solve the error “Connection rejected: No connection character set specified” If no character set has been set, Jaybird 3.0 will reject the connection with an SQLNonTransientConnectionException with message “Connection rejected: No connection character set specified (property lc_ctype, encoding, charSet or localEncoding). Please specify a connection character set (eg property charSet=utf-8) or consult the Jaybird documentation for more information.” 

مجموعة الحد الأدنى من الطبقات والملفات


للبدء ، يحتوي index.html على نص فارغ ؛
يتم تشغيل Swagger في واجهة برمجة التطبيقات ، حيث يتم وضع تكوينات الحزمة (infra) الخاصة بها على مستوى مع باقي حزمة المشروع.



أضف إلى المشروع:


  • نموذج الحزمة
    • clacc CModule - aka Data (getter، setter for members، وذلك بفضل لومبوك على الحد الأدنى من "رمز القرد") ، ويعرف أيضًا باسم Entity (جوهر جدول قاعدة البيانات) ؛
  • مستودع الحزمة
    • واجهة CModuleRepository يمتد JpaRepository <CModule، String> (ستحدد البيانات من قاعدة البيانات) ، والآن لا يحتاج إلى إضافة أي شيء إليها (مثل Query ) ؛
  • خدمات الحزمة ؛
    • class CModuleService - aka aka andTransactional (readOnly = true) للعمل مع المستودع ؛
  • موارد الحزمة
    • class CModulesResource - الملقبRestController ، ستكونRequestMapping ("/ modules") مسؤولة عن الوصول إلى هذا العنوان. هيئة الاستجابة ستفعل ذلك بنفسك (بالنسبة لنا يبدو هذا)

سوف نعمل مع RestController API بكل الطرق ، ونشير إلى Swagger:


 @Configuration @EnableSwagger2 public class SwaggerConfiguration { @Bean public Docket documentation(){ return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .paths(PathSelectors.any()) .build(); } } 

إنشاء فصل تشغيل تطبيق الربيع:


 @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } } 

يتم إنشاء النماذج والمستودعات والطلب للجدول المطلوب (لدي وحدات):
الآن يمكنك أن تأخذ على RestController


 @RestController @RequestMapping("/modules") @Api(tags = "Modules", description = "Modules API") public class CModulesResource { .... @GetMapping(value = "/{name}") @ApiOperation(value = "Find module",notes = "Find the module by Name") @ApiResponses(value = { @ApiResponse(code = 200,message = "Modules found"), @ApiResponse(code = 404,message = "Modules not found"), }) 

ابي - اسم الفصل مع الوصف ؛
ApiOperation اسم الأسلوب مع الوصف ؛
قامApiResponses بإرجاع رموز واجهة برمجة التطبيقات ؛
ApiResponse رمز محدد مع وصف ؛


مثال (نعم ، لا يزال يحتوي على الكيان الرئيسي ، الذي لم أصفه في المقال)


الآن يمكنك اختبار تحديد البيانات باستخدام REST API.


قائمة الأدبيات المستخدمة:


 1. https://www.baeldung.com 2. https://docs.spring.io 3. Spring in Action, 5th Edition 4. https://www.firebirdsql.org/file/documentation/drivers_documentation/java/faq.html#how-can-i-solve-the-error-connection-rejected-no-connection-character-set-specified 

githublink


مشروع جيثب

Source: https://habr.com/ru/post/ar432244/


All Articles