بدلا من الانضمام
إذا كنت تقوم بتحليل شيء ما ، فحاول وصفه بلغة واضحة وابحث عن شخص سيقرأ تعليقاته ويلقيها (أعيد صياغتها على ر. فينمان ، لكن نعم فعلت ذلك).
كل التعليقات ، حتى الشريرة في اسلوب "نعم ، هذا ~ أبيض ~~ الناس يسمح لنفسه "موضع ترحيب.
الأهداف
التطبيقات - عرض تقارير حول تقدم المنتج (المقاييس) ، إن أمكن ، مع توزيع هذه البيانات عبر الشبكة داخل المؤسسة (للوظائف) ؛
الشخصية - فهم القليل من تكنولوجيا الربيع
التكنولوجيا
- شبكة الربيع
- الربيع jpa
- لومبوك
- SpringFox Swagger (سأختبر الراحة عليه)
- jaybird-jdk17 ، الإصدار 3.0.5
- مخضرم
الدافع الدافع الربيع + فايربيرد
في الآونة الأخيرة ، تم إنشاء أول عميل ضمن Linux Mint لمشغل Ovsezavod ولم يكن عرض التقارير من Wine كافياً دائمًا. (كل شيء آخر يعمل بشكل جيد - التصور Qt - SCADA ، Java SE المحفوظات).
بعض أشعل النار التي كان لا بد من صعدت
- تبعيات جاكسون من إصدارات مختلفة (ثابتة) ،
- 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 ، فمن الأسهل رؤية المكتبات الخارجية . أن هناك كل التبعيات وهم الإصدارات الصحيحة.
هيكل التطبيق العام
لست على دراية باختبار الإقلاع الربيعي للتطبيق ، لذلك سأفعل ذلك بدون اختبارات
("نعم ، لون البشرة # يسمح لنفسه").

تكوين التطبيق
بما أنني مطور متمرس ، وبالتالي لست على دراية بالطرق الثابتة ، سأقوم بما يلي:
- في 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
- باستخدام التعليقات التوضيحية مباشرة في الفصول الدراسية:
إذا لم تحدد 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
مشروع جيثب