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

অনেক ডেভেলপার মনে করেন Spring Boot শুধুমাত্র JSON ডেটা প্রদান করে। তারা বিশ্বাস করেন যে আপনাকে Vercel বা AWS-এর মতো আলাদা সার্ভারে একটি React বা Vue অ্যাপ হোস্ট করতে হবে।

এটি একটি ভুল ধারণা।

Spring Boot-এর মধ্যে একটি এমবেডেড Apache Tomcat সার্ভার অন্তর্ভুক্ত থাকে। এর মানে হলো আপনি একটি মাত্র JAR ফাইলের ভেতরেই ফুল-স্ট্যাক অ্যাপ্লিকেশন তৈরি করতে পারেন।

একটি মাত্র JAR ফাইল ব্যবহার করার তিনটি প্রধান সুবিধা রয়েছে:

  • কোনো CORS সমস্যা নেই: আপনার ফ্রন্টএন্ড এবং ব্যাকএন্ড একই পোর্ট এবং ডোমেইন ব্যবহার করে।
  • কম খরচ: আপনার আলাদা কোনো Node.js সার্ভারের প্রয়োজন নেই। একটি Linux সার্ভার বা Docker কন্টেইনার দিয়েই সবকিছু চালানো সম্ভব।
  • সহজ ডিপ্লয়মেন্ট: একটি মাত্র বিল্ড প্রসেস দিয়েই আপনার UI এবং সার্ভার উভয়ই পরিচালনা করা যায়।

Spring Boot-এ আপনার UI অন্তর্ভুক্ত করার চারটি উপায় নিচে দেওয়া হলো:

  1. Server-Side Templating (SSR) সার্ভারে HTML রেন্ডার করার জন্য Thymeleaf ব্যবহার করুন। আপনি আপনার Maven ফাইলে starter dependency যোগ করবেন এবং HTML টেমপ্লেট রিটার্ন করার জন্য একটি Controller ব্যবহার করবেন। এটি সহজ এবং দ্রুত।

  2. Vaadin Vaadin আপনাকে শুধুমাত্র Java ব্যবহার করে আধুনিক ওয়েব অ্যাপ তৈরি করতে দেয়। আপনাকে JavaScript বা CSS লিখতে হবে না। Vaadin ব্যাকগ্রাউন্ডে React কম্পোনেন্টগুলো পরিচালনা করে এবং Tomcat-এর মাধ্যমে সেগুলো সার্ভ করে। যারা ফ্রন্টএন্ডের জটিলতা এড়াতে চান, সেই Java ডেভেলপারদের জন্য এটি দারুণ।

  3. JSF (JavaServer Faces) এন্টারপ্রাইজ সিস্টেমের জন্য JSF একটি শক্তিশালী পছন্দ। উচ্চমানের কম্পোনেন্ট পেতে আপনি এটিকে PrimeFaces বা BootsFaces-এর সাথে যুক্ত করতে পারেন। আপনাকে শুধু আপনার Spring কনফিগারেশনে FacesServlet রেজিস্টার করতে হবে।

  4. The Indie Hacker Way (SPA Integration) আপনি একটি React বা Vite অ্যাপ তৈরি করতে পারেন এবং বিল্ড ফাইলগুলোকে src/main/resources/static ফোল্ডারে নিয়ে যেতে পারেন।

এটি স্বয়ংক্রিয় করতে frontend-maven-plugin ব্যবহার করুন। এটি আপনার Maven বিল্ড চলাকালীন npm install এবং npm build রান করে।

React ব্যবহারকারীদের জন্য একটি টিপস: আপনি যদি React Router ব্যবহার করেন, তবে অজানা পাথগুলোকে index.html-এ রিডাইরেক্ট করার জন্য একটি Controller তৈরি করুন। এটি ব্যবহারকারীরা যখন পেজ রিফ্রেশ করেন তখন 404 এরর প্রতিরোধ করে।

অতিরিক্ত সার্ভার খোঁজা বন্ধ করুন। আপনার এমবেডেড Tomcat-এর ক্ষমতা ব্যবহার করুন।

উৎস: https://dev.to/ganigurgah/spring-boot-is-not-just-a-rest-api-server-50hh