𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁 𝗜𝘀 𝗡𝗼𝘁 𝗝𝘂𝘀𝘁 𝗮 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜 𝗦𝗲𝗿𝘃𝗲𝗿

يعتقد الكثير من المطورين أن Spring Boot يخدم بيانات JSON فقط، ويظنون أنه يجب عليك استضافة تطبيق React أو Vue على خادم منفصل مثل Vercel أو AWS.

هذا خطأ.

يتضمن Spring Boot خادم Apache Tomcat مدمجاً، وهذا يعني أنه يمكنك بناء تطبيقات full-stack داخل ملف JAR واحد.

يمنحك استخدام ملف JAR واحد ثلاث فوائد رئيسية:

  • انعدام مشاكل CORS: يستخدم كل من الـ frontend والـ backend نفس المنفذ (port) والنطاق (domain).
  • تكاليف أقل: لن تحتاج إلى خادم Node.js منفصل؛ فخادم Linux واحد أو حاوية Docker واحدة يمكنها تشغيل كل شيء.
  • نشر بسيط: عملية بناء (build) واحدة تتعامل مع كل من واجهة المستخدم (UI) والخادم الخاص بك.

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

  1. القوالب من جانب الخادم (SSR) استخدم Thymeleaf لتقديم HTML على الخادم. تقوم بإضافة الـ starter dependency إلى ملف Maven الخاص بك وتستخدم Controller لإرجاع قوالب HTML. إنها طريقة بسيطة وسريعة.

  2. Vaadin يتيح لك Vaadin بناء تطبيقات ويب حديثة باستخدام Java فقط. لن تحتاج إلى كتابة JavaScript أو CSS، حيث يقوم Vaadin بمعالجة مكونات React في الخلفية وتقديمها عبر Tomcat. هذا أمر رائع لمطوري Java الذين يرغبون في تجنب تعقيدات الـ frontend.

  3. JSF (JavaServer Faces) يعد JSF خياراً قوياً لأنظمة المؤسسات (enterprise systems). يمكنك دمجه مع PrimeFaces أو BootsFaces للحصول على مكونات عالية الجودة. كل ما عليك فعله هو تسجيل FacesServlet في إعدادات Spring الخاصة بك.

  4. طريقة الـ Indie Hacker (تكامل SPA) يمكنك بناء تطبيق React أو Vite ونقل ملفات الـ build إلى المجلد src/main/resources/static.

لأتمتة ذلك، استخدم frontend-maven-plugin، حيث يقوم بتشغيل npm install و npm build أثناء عملية بناء Maven.

نصيحة لمستخدمي React: إذا كنت تستخدم React Router، فقم بإنشاء Controller لإعادة توجيه المسارات غير المعروفة إلى index.html. هذا يمنع أخطاء 404 عندما يقوم المستخدمون بتحديث الصفحة.

توقف عن البحث عن خوادم إضافية، واستغل قوة Tomcat المدمج لديك.

المصدر: https://dev.to/ganigurgah/spring-boot-is-not-just-a-rest-api-server-50hh