مقدمة إلى Spring Boot: إنشاء واجهة برمجة تطبيقات REST بسيطة في Java


بسبب تكوين التبعية المرهقة ، أصبح تكوين Spring لتطبيقات المؤسسة مهمة شاقة للغاية وعرضة للخطأ. ينطبق هذا بشكل خاص على التطبيقات التي تستخدم أيضًا عدة مكتبات تابعة لجهات أخرى.


في كل مرة تنشئ فيها تطبيق Java خاص بمؤسسة Spring ، ستحتاج إلى تكرار نفس الخطوات الروتينية لتكوينه:


  • اعتمادًا على نوع التطبيق الذي يتم إنشاؤه (Spring MVC ، Spring JDBC ، Spring ORM ، إلخ) ، قم باستيراد وحدات Spring اللازمة
  • استيراد مكتبة حاويات الويب (لتطبيقات الويب)
  • قم باستيراد مكتبات الطرف الثالث الضرورية (على سبيل المثال ، الإسبات وجاكسون) ، بينما يجب أن تبحث عن الإصدارات المتوافقة مع الإصدار المحدد من Spring
  • تكوين مكونات DAO ، مثل: مصادر البيانات ، وإدارة المعاملات ، إلخ.
  • قم بتكوين مكونات طبقة الويب ، مثل: مدير الموارد ، عرض محلل
  • تحديد فئة من شأنها أن تحمل جميع التكوينات اللازمة.

1. إدخال الحذاء الربيع


قرر مؤلفو Spring تزويد المطورين ببعض الأدوات المساعدة التي تعمل على أتمتة عملية التكوين وتسريع عملية إنشاء ونشر تطبيقات Spring ، والتي تسمى مجتمعة Spring Boot


Spring Boot هو مشروع مفيد هدفه تبسيط إنشاء تطبيقات تعتمد على Spring. يتيح لك إنشاء تطبيق ويب بأبسط الطرق ، مما يتطلب بذل جهد بسيط من المطورين لتكوين وكتابة التعليمات البرمجية.


2. ملامح الربيع الحذاء


يتمتع Spring Boot بوظيفة رائعة ، لكن أهم ميزاته هي: إدارة التبعية والتكوين التلقائي وحاويات servlet المدمجة


2.1. إدارة التبعية سهلة


لتسريع عملية إدارة التبعية ، يقوم Spring Boot ضمنيًا بتعبئة التبعيات الضرورية من الطرف الثالث لكل نوع من التطبيقات المستندة إلى Spring ويوفرها للمطور من خلال ما يسمى حزم بداية التشغيل (spring-boot-starter-web ، spring-boot-starter-data-jpa ، إلخ.) .د.)


حزم Starter هي مجموعة من واصفات التبعية الملائمة التي يمكنك تضمينها في التطبيق الخاص بك. سيوفر هذا حلاً شاملاً لجميع التقنيات المرتبطة بـ Spring ، مما يوفر للمبرمج من البحث دون داع عن أمثلة التعليمات البرمجية وتحميل واصفات التبعية المطلوبة منها (سيتم عرض مثال على مثل هذه الواصفات وحزم بداية التشغيل أدناه)


على سبيل المثال ، إذا كنت ترغب في البدء في استخدام Spring Data JPA للوصول إلى قاعدة البيانات ، فما عليك سوى تضمين تبعية spring-boot-starter-data-jpa في مشروعك وأنت انتهيت (لا يلزم البحث عن برامج تشغيل قواعد البيانات المتوافقة ومكتبات الإسبات)


إذا كنت ترغب في إنشاء تطبيق ويب Spring ، فما عليك سوى إضافة تبعية spring-boot-starter-web ، التي تجلب إلى المشروع جميع المكتبات اللازمة لتطوير تطبيقات Spring MVC ، مثل spring-webmvc ، و jackson-json ، و validation-api و Tomcat


بمعنى آخر ، يجمع Spring Boot جميع التبعيات الشائعة ويحددها في مكان واحد ، مما يسمح للمطورين باستخدامها ببساطة ، بدلاً من إعادة اختراع العجلة في كل مرة يقومون فيها بإنشاء تطبيق جديد


لذلك ، عند استخدام Spring Boot ، يحتوي ملف pom.xml على عدد أقل بكثير من الخطوط عند استخدامه في تطبيقات Spring


راجع الوثائق الخاصة بجميع حزم بدء تشغيل Spring Boot.


2.2. التكوين التلقائي


الثانية ميزة ممتازة التمهيد الربيع هو التكوين التلقائي التطبيق


بعد اختيار حزمة البداية المناسبة ، سيحاول Spring Boot تكوين تطبيق Spring تلقائيًا استنادًا إلى تبعيات الجرة التي أضفتها


على سبيل المثال ، إذا أضفت Spring-boot-starter-web ، فسيقوم Spring Boot تلقائيًا بتكوين الفول المسجل مثل DispatcherServlet و ResourceHandlers و MessageSource


إذا كنت تستخدم spring-boot-starter-jdbc ، فإن Spring Boot يقوم تلقائيًا بتسجيل حبوب DataSource و EntityManagerFactory و TransactionManager ويقرأ المعلومات للاتصال بقاعدة البيانات من ملف application.properties


إذا كنت لا تستخدم قاعدة البيانات ، ولم تقدم أي تفاصيل حول الاتصال في الوضع اليدوي ، فإن Spring Boot سيقوم تلقائيًا بتكوين قاعدة البيانات في الذاكرة ، دون أي تكوين إضافي من جانبك (إذا كانت هناك مكتبات H2 أو HSQL)


يمكن إعادة تعريف التكوين التلقائي بالكامل في أي وقت باستخدام إعدادات المستخدم


2.3. الدعم الأصلي لخادم التطبيق - حاوية servlet


يتضمن كل تطبيق ويب Spring Boot خادم ويب مضمنًا. ألقِ نظرة على قائمة حاويات servlet المدعومة من خارج الصندوق.


لم يعد على المطورين القلق بشأن تكوين حاوية servlet ونشر التطبيق عليها. الآن يمكن أن يبدأ التطبيق من تلقاء نفسه ، كملف جرة قابل للتنفيذ باستخدام خادم مضمن


إذا كنت بحاجة إلى استخدام خادم HTTP منفصل ، فما عليك سوى استبعاد التبعيات الافتراضية لهذا الغرض. يوفر Spring Boot حزم بداية منفصلة لخوادم HTTP مختلفة


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


3. متطلبات التثبيت التمهيد الربيع


لتكوين تطبيقات Spring Boot وتشغيلها ، يلزم توفر ما يلي:


  • جافا 8+
  • أباتشي مافن 3.x

4. إنشاء تطبيق التمهيد الربيع


الآن ، دعونا نمارس وننفذ واجهة برمجة تطبيقات REST بسيطة جدًا لقبول المدفوعات باستخدام إمكانيات Spring Boot


4.1. إنشاء مشروع ويب باستخدام Maven


قم بإنشاء مشروع Maven في IDE الذي تستخدمه ، والذي يطلق عليه SpringBootRestService


تأكد من استخدام إصدار Java 8+ لأن Spring Boot لا يعمل مع الإصدارات السابقة


4.2. تكوين Pom.xml


والخطوة الثانية هي تكوين Spring Boot في ملف pom.xml


يتم تكوين جميع تطبيقات Spring Boot من برنامج spring-boot-starter-parent ، لذلك قبل إضافة مزيد من التبعيات ، أضف بداية بداية الأصل كما يلي:


<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> 

بسبب نظرًا لأننا نقوم بإنشاء REST API ، فمن الضروري استخدام spring-boot-starter-web كتبعية ، والتي تحدد ضمنيًا كل التبعيات الأخرى ، مثل spring-core و spring-web و spring-webmvc و servlet api ومكتبة jackson-databind ، وبالتالي فقط أضف ما يلي إلى pom.xml:


 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 

الآن يتم استيراد مكتبات jar التالية تلقائيًا في مشروعك:


الصورة


الخطوة التالية هي إضافة البرنامج المساعد Spring Boot:


 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 

الخطوة الأخيرة هي جعل Maven يقوم بإنشاء ملف جرة قابل للتنفيذ أثناء التجميع:


 <packaging>jar</packaging> 

يوجد أدناه ملف pom.xml الكامل:


 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springboot.topjava.ru</groupId> <artifactId>SpringBootRestService</artifactId> <version>1.0</version> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

كما ترون ، باستخدام تبعية واحدة ، يمكننا إنشاء تطبيق ويب كامل الوظائف


4.3. إنشاء موارد REST


سنقوم الآن بإنشاء وحدة تحكم في الدفع مع فئات POJO للطلبات والاستجابات


لنكتب فئة طلب الدفع:


 package springboot.topjava.ru; public class PaymentRequest { private int userId; private String itemId; private double discount; public String getItemId() { return itemId; } public void setItemId(String itemId) { this.itemId = itemId; } public double getDiscount() { return discount; } public void setDiscount(double discount) { this.discount = discount; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } } 

وأيضاً الفصل الذي يعالج الاستجابة الأساسية التي تُرجعها خدمتنا:


 package springboot.topjava.ru; public class BaseResponse { private final String status; private final Integer code; public BaseResponse(String status, Integer code) { this.status = status; this.code = code; } public String getStatus() { return status; } public Integer getCode() { return code; } } 

الآن إنشاء وحدة تحكم:


 package springboot.topjava.ru; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/payment") public class PaymentController { private final String sharedKey = "SHARED_KEY"; private static final String SUCCESS_STATUS = "success"; private static final String ERROR_STATUS = "error"; private static final int CODE_SUCCESS = 100; private static final int AUTH_FAILURE = 102; @GetMapping public BaseResponse showStatus() { return new BaseResponse(SUCCESS_STATUS, 1); } @PostMapping("/pay") public BaseResponse pay(@RequestParam(value = "key") String key, @RequestBody PaymentRequest request) { final BaseResponse response; if (sharedKey.equalsIgnoreCase(key)) { int userId = request.getUserId(); String itemId = request.getItemId(); double discount = request.getDiscount(); // Process the request // .... // Return success response to the client. response = new BaseResponse(SUCCESS_STATUS, CODE_SUCCESS); } else { response = new BaseResponse(ERROR_STATUS, AUTH_FAILURE); } return response; } } 

4.4. إنشاء فئة التطبيق الرئيسية


هذه الخطوة الأخيرة هي إنشاء فئة تكوين وتشغيل التطبيق. يدعم Spring Boot التعليق التوضيحي الجديد SpringBootApplication ، والذي يعادل استخدام Configuration و EnableAutoConfiguration و ComponentScan مع سماتهما الافتراضية


وبالتالي ، تحتاج فقط إلى إنشاء فصل توضيحي باستخدام SpringBootApplication ، وسيقوم Spring Boot بتمكين التكوين التلقائي وسيقوم بمسح مواردك في الحزمة الحالية:


 package springboot.topjava.ru; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 

5. نشر تطبيق التمهيد في الربيع


الآن ، دعونا نستفيد من الميزة الثالثة الرائعة لـ Spring Boot - إنها خادم مضمن. كل ما نحتاج إلى القيام به هو إنشاء ملف جرة قابل للتنفيذ باستخدام Maven وتشغيله مثل تطبيق قائم بذاته عادي:


  • أدخل وضع سطر الأوامر (أمر cmd) ، انتقل إلى المجلد باستخدام pom.xml وأدخل الأمر mvn clean package
  • سوف Maven إنشاء ملف جرة قابل للتنفيذ يسمى SpringBootRestService-1.0.jar
  • انتقل إلى المجلد الهدف مؤتمر نزع السلاح
  • ثم قم بتشغيل ملف jar: java -jar SpringBootRestService-1.0.jar
  • انتقل إلى المتصفح على http: // localhost: 8080 / payment

واجهة برمجة تطبيقات REST قيد التشغيل وجاهزة لتلبية الطلبات من خلال المنفذ 8080 (افتراضيًا)


في هذه المقالة ، نظرنا في إمكانيات Spring Boot وقمنا بإنشاء مثال يعمل بشكل كامل باستخدام الخادم المضمن.


المصدر:
https://dzone.com/articles/introducing-spring-boot


في الترجمة ، تم تحديث المعلومات:


  • قام Spring-boot-starter-parent بتغيير الإصدار من 1.5.8.RELEASE إلى 2.1.1.RELEASE وبالتالي تم تحديث قائمة المكتبات التي يسحبها Maven.
  • إزالتها من بيانات مستودع الربيع ، يتم سحب التبعيات من المستودع المركزي
  • في فئة BaseResponse ، أصبحت الحقول نهائية ، وأضفت مُنشئًا ، وأزيلت المستوطنين
  • في PaymentController ، قدمنا ​​طريقة showStatus () معGetMapping لاختبار التطبيق في المستعرض
  • تم استبدالRequestMapping بطرق مع @ GetMapping / @ PostMapping
  • تم إجراء تغييرات أيضًا لنشر التطبيق من سطر الأوامر

تحديث:


كما لاحظ Lure_of_Chaos ، الآن يمكن القيام بكل شيء تلقائيًا من خلال SPRING INITIALIZR . وبدون مغادرة برنامج JetBrains IntelliJ IDEA المفضل لديك .

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


All Articles