Spring Framework একটি শক্তিশালী এবং নমনীয় Java ফ্রেমওয়ার্ক যা অ্যাপ্লিকেশন ডেভেলপমেন্টে সাহায্য করে। এটি ডিপেনডেন্সি ইনজেকশন, এএসপেক্ট-অরিয়েন্টেড প্রোগ্রামিং, ট্রানজেকশন ম্যানেজমেন্ট, ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্ট ইত্যাদি সুবিধা প্রদান করে। Spring ফ্রেমওয়ার্ক ব্যবহারে বিভিন্ন ধরনের অ্যাপ্লিকেশন যেমন মাইক্রো-সার্ভিস, ওয়েব অ্যাপ্লিকেশন এবং ডিস্ট্রিবিউটেড সিস্টেম তৈরি করা যায়।
Spring Framework ইন্সটল এবং সেটআপ করার জন্য নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করতে হবে:
1. Spring Framework ইন্সটলেশন
Spring Framework সাধারণত Maven বা Gradle ব্যবহার করে ইন্সটল এবং ম্যানেজ করা হয়। এখানে Maven ব্যবহার করে Spring Framework সেটআপ করার প্রক্রিয়া দেখানো হলো।
1.1 Maven Project এর জন্য Spring Framework সেটআপ
Spring Framework শুরু করার জন্য Maven প্রজেক্ট তৈরি করতে হবে, যেখানে Spring-এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যোগ করা হবে।
1.1.1 Maven ডিপেনডেন্সি (pom.xml)
Spring Framework সেটআপ করার জন্য pom.xml ফাইলে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে।
<dependencies>
<!-- Spring Core Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version> <!-- Use the latest stable version -->
</dependency>
<!-- Spring AOP Dependency (Optional for Aspect-Oriented Programming) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.20</version>
</dependency>
<!-- Spring JDBC Dependency (Optional for Database Access) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.20</version>
</dependency>
<!-- Spring Web MVC Dependency (Optional for Web Development) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.20</version>
</dependency>
</dependencies>
এখানে, spring-context, spring-aop, spring-jdbc, এবং spring-webmvc ডিপেনডেন্সি যোগ করা হয়েছে। আপনি যদি Spring এর অন্যান্য মডিউল ব্যবহার করতে চান, তবে সেগুলিও pom.xml ফাইলে যোগ করতে হবে।
1.1.2 Spring Boot Starter (Optional)
যদি আপনি Spring Boot ব্যবহার করতে চান, তবে Spring Boot starter যোগ করতে পারেন, যা Spring অ্যাপ্লিকেশন ডেভেলপমেন্ট আরও সহজ করে।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
এটি Spring Boot এর জন্য মৌলিক ডিপেনডেন্সি সরবরাহ করবে।
1.2 Gradle Project এর জন্য Spring Framework সেটআপ
Spring Framework Gradle ব্যবহার করেও সেটআপ করা যেতে পারে। Gradle এর জন্য build.gradle ফাইলে Spring Framework ডিপেনডেন্সি যোগ করতে হবে।
dependencies {
// Spring Core Dependency
implementation 'org.springframework:spring-context:5.3.20'
// Spring AOP Dependency (Optional for Aspect-Oriented Programming)
implementation 'org.springframework:spring-aop:5.3.20'
// Spring JDBC Dependency (Optional for Database Access)
implementation 'org.springframework:spring-jdbc:5.3.20'
// Spring Web MVC Dependency (Optional for Web Development)
implementation 'org.springframework:spring-webmvc:5.3.20'
}
এখানে, Spring Framework এর জন্য একই ধরনের ডিপেনডেন্সি Gradle এর মাধ্যমে যোগ করা হয়েছে।
2. Spring Framework সেটআপ
Spring Framework সেটআপ করার জন্য প্রধানত দুটি উপায় রয়েছে:
- XML কনফিগারেশন: এটি Spring Framework এর পুরোনো কনফিগারেশন পদ্ধতি যেখানে Spring Beans XML ফাইলে কনফিগার করা হয়।
- Java Config (Annotation-based Configuration): এটি Spring 3.0 এর পরে জনপ্রিয় হয়েছে, যেখানে Java ক্লাসের মাধ্যমে @Configuration, @Bean, @ComponentScan ইত্যাদি অ্যানোটেশন ব্যবহার করে কনফিগারেশন করা হয়।
2.1 XML কনফিগারেশন
XML কনফিগারেশন ব্যবহারের জন্য আপনাকে applicationContext.xml ফাইল তৈরি করতে হবে।
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Bean Definitions -->
<bean id="employeeService" class="com.example.EmployeeService"/>
</beans>
এখানে, employeeService Bean কনফিগার করা হয়েছে।
2.2 Java Config (Annotation-based Configuration)
Java Config ব্যবহারের জন্য আপনাকে একটি কনফিগারেশন ক্লাস তৈরি করতে হবে যা @Configuration অ্যানোটেশন দ্বারা চিহ্নিত করা হয় এবং এতে Spring Beans কনফিগার করা হয়।
package com.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import com.example.service.EmployeeService;
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
@Bean
public EmployeeService employeeService() {
return new EmployeeService();
}
}
এখানে, @Configuration অ্যানোটেশন দ্বারা Spring কনফিগারেশন ক্লাস চিহ্নিত করা হয়েছে এবং @Bean অ্যানোটেশন ব্যবহার করে EmployeeService Bean কনফিগার করা হয়েছে। @ComponentScan Spring কে নির্দিষ্ট প্যাকেজের ক্লাসগুলির জন্য Bean স্ক্যান করতে বলে।
3. Spring Framework এর প্রধান ফিচার
Spring Framework অনেক গুরুত্বপূর্ণ ফিচার সরবরাহ করে, যেমন:
- Dependency Injection (DI): Spring Framework এর মূল ফিচার যেখানে Bean গুলি একে অপরের সাথে সম্পর্কিত থাকে এবং তাদের মধ্যে ডিপেনডেন্সি ইনজেক্ট করা হয়।
- Aspect-Oriented Programming (AOP): Spring AOP ফিচারের মাধ্যমে আপনি ক্রস-কাটিং কনসার্ন (যেমন লগিং, সিকিউরিটি) পরিচালনা করতে পারেন।
- Transaction Management: Spring এর ট্রানজেকশন ম্যানেজমেন্ট ফিচার ডাটাবেস ট্রানজেকশন পরিচালনা করতে সহায়তা করে।
- Spring MVC: Spring Web MVC ফিচার ব্যবহার করে ওয়েব অ্যাপ্লিকেশন ডেভেলপ করা যায়।
- Spring Data JPA: ডাটাবেসের সাথে সম্পর্কিত কার্যাবলী পরিচালনা করতে Spring Data JPA ফিচার ব্যবহৃত হয়।
4. Spring Boot ব্যবহার করে Spring Framework সেটআপ
Spring Boot ব্যবহার করলে Spring Framework সেটআপ করা আরও সহজ হয়ে যায়। Spring Boot এর মাধ্যমে Spring অ্যাপ্লিকেশন দ্রুত শুরু করা যায়, কারণ Spring Boot স্টার্টার ডিপেনডেন্সি এবং অটো কনফিগারেশন প্রদান করে।
4.1 Spring Boot Starter Setup
Spring Boot Starter এর মাধ্যমে Spring Framework দ্রুত এবং সহজভাবে সেটআপ করা সম্ভব। Spring Boot এর spring-boot-starter-web ডিপেনডেন্সি দিয়ে Spring Web MVC ফিচার সক্রিয় করা যায়।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
এটি Spring Web MVC, Tomcat এবং অন্যান্য প্রয়োজনীয় কম্পোনেন্টগুলির জন্য অটো কনফিগারেশন প্রদান করে।
4.2 Spring Boot Main Application Class
Spring Boot অ্যাপ্লিকেশন শুরু করার জন্য একটি প্রধান ক্লাস তৈরি করতে হয় যেখানে @SpringBootApplication অ্যানোটেশন ব্যবহার করা হয়।
package com.example;
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);
}
}
এখানে @SpringBootApplication অ্যানোটেশন Spring Boot অ্যাপ্লিকেশন চালু করতে ব্যবহৃত হয়।
সারাংশ
Spring Framework সেটআপ করার জন্য Maven বা Gradle ব্যবহার করা হয় এবং Spring Beans কনফিগারেশন XML বা Java Config এর মাধ্যমে করা যেতে পারে। Spring Boot ব্যবহার করলে Spring অ্যাপ্লিকেশন দ্রুত এবং সহজভাবে তৈরি করা যায়, কারণ Spring Boot স্টার্টার ডিপেনডেন্সি এবং অটো কনফিগারেশন সরবরাহ করে। Spring Framework-এর বিভিন্ন ফিচার যেমন Dependency Injection, AOP, Transaction Management, এবং Spring MVC ব্যবহার করে আপনি শক্তিশালী এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Spring Framework একটি জনপ্রিয় Java ফ্রেমওয়ার্ক যা ব্যাপকভাবে অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। Spring প্রজেক্ট তৈরি করতে Maven এবং Gradle দুটি সাধারণ বিল্ড টুল হিসেবে ব্যবহৃত হয়। এখানে, Maven এবং Gradle ব্যবহার করে Spring প্রজেক্ট কিভাবে তৈরি করা যায় তা বিস্তারিতভাবে আলোচনা করা হবে।
1. Maven দিয়ে Spring প্রজেক্ট তৈরি করা
1.1 Spring Initializr ব্যবহার করে Maven প্রজেক্ট তৈরি করা
Spring Initializr ব্যবহার করে খুব সহজে Spring প্রজেক্ট তৈরি করা যায়। Spring Initializr একটি ওয়েব ভিত্তিক টুল, যা আপনাকে Spring প্রজেক্টের কাঠামো তৈরি করতে সাহায্য করে। Maven ভিত্তিক Spring প্রজেক্ট তৈরি করতে নিম্নলিখিত পদক্ষেপ অনুসরণ করুন:
- Spring Initializr ওয়েবসাইটে যান: Spring Initializr
- Project হিসেবে
Maven Projectনির্বাচন করুন। - Language হিসেবে
Javaনির্বাচন করুন। - Spring Boot Version নির্বাচন করুন (যেমন: 2.6.6 বা আপনার পছন্দের লেটেস্ট ভার্সন)।
- Dependencies হিসেবে আপনার প্রয়োজনীয় ডিপেনডেন্সি (যেমন:
Spring Web,Spring Data JPA,Spring Boot DevTools,Thymeleafইত্যাদি) নির্বাচন করুন। - "Generate" বাটনে ক্লিক করুন এবং একটি
.zipফাইল ডাউনলোড করুন। .zipফাইলটি এক্সট্র্যাক্ট করুন এবং আপনার পছন্দের IDE (যেমন IntelliJ IDEA, Eclipse) তে ওপেন করুন।
1.2 Maven pom.xml কনফিগারেশন
Spring Boot প্রজেক্টে Maven ব্যবহারের জন্য pom.xml ফাইলে প্রয়োজনীয় ডিপেনডেন্সি কনফিগার করতে হবে। নিচে একটি সাধারণ pom.xml কনফিগারেশন দেওয়া হলো:
<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>com.example</groupId>
<artifactId>spring-boot-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-app</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- Spring Web dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Data JPA dependency for database integration -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Thymeleaf dependency for templating -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- H2 database dependency for in-memory database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot Starter Test for testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven Plugin for running the app -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
এখানে:
spring-boot-starter-web: ওয়েব অ্যাপ্লিকেশন তৈরির জন্য।spring-boot-starter-data-jpa: ডেটাবেস ইন্টিগ্রেশন এবং JPA ব্যবহারের জন্য।spring-boot-starter-thymeleaf: থাইমলিফ টেমপ্লেট ইঞ্জিনের জন্য।h2: একটি ইন-মেমরি ডেটাবেস (ডেভেলপমেন্ট বা টেস্টিং এর জন্য)।spring-boot-maven-plugin: Spring Boot অ্যাপ্লিকেশন রান করার জন্য ব্যবহৃত প্লাগিন।
2. Gradle দিয়ে Spring প্রজেক্ট তৈরি করা
2.1 Spring Initializr ব্যবহার করে Gradle প্রজেক্ট তৈরি করা
Spring Initializr এর মাধ্যমে Gradle ভিত্তিক Spring প্রজেক্ট তৈরি করতে নিচের পদক্ষেপ অনুসরণ করুন:
- Spring Initializr ওয়েবসাইটে যান: Spring Initializr
- Project হিসেবে
Gradle Projectনির্বাচন করুন। - Language হিসেবে
Javaনির্বাচন করুন। - Spring Boot Version নির্বাচন করুন (যেমন: 2.6.6 বা আপনার পছন্দের লেটেস্ট ভার্সন)।
- Dependencies হিসেবে আপনার প্রয়োজনীয় ডিপেনডেন্সি নির্বাচন করুন (যেমন:
Spring Web,Spring Data JPA,Spring Boot DevTools,Thymeleafইত্যাদি)। - "Generate" বাটনে ক্লিক করুন এবং একটি
.zipফাইল ডাউনলোড করুন। .zipফাইলটি এক্সট্র্যাক্ট করুন এবং আপনার IDE তে ওপেন করুন।
2.2 Gradle build.gradle কনফিগারেশন
Gradle ব্যবহার করে Spring প্রজেক্টের কনফিগারেশন করতে build.gradle ফাইলে নিচের ডিপেনডেন্সি কনফিগার করা হয়:
plugins {
id 'org.springframework.boot' version '2.6.6'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
// Spring Boot Starter Web for web functionalities
implementation 'org.springframework.boot:spring-boot-starter-web'
// Spring Data JPA for database integration
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// Thymeleaf for templating
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
// H2 database for in-memory database
runtimeOnly 'com.h2database:h2'
// Spring Boot Starter Test for testing
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
এখানে:
spring-boot-starter-web: ওয়েব অ্যাপ্লিকেশন তৈরির জন্য।spring-boot-starter-data-jpa: ডেটাবেস ইন্টিগ্রেশন এবং JPA ব্যবহারের জন্য।spring-boot-starter-thymeleaf: থাইমলিফ টেমপ্লেট ইঞ্জিনের জন্য।h2: ইন-মেমরি ডেটাবেস (ডেভেলপমেন্ট বা টেস্টিং এর জন্য)।spring-boot-starter-test: টেস্টিংয়ের জন্য।
3. Spring Boot অ্যাপ্লিকেশন তৈরি করা
Maven বা Gradle দিয়ে Spring প্রজেক্ট তৈরি করার পর, আপনি @SpringBootApplication অ্যানোটেশন ব্যবহার করে মূল অ্যাপ্লিকেশন ক্লাস তৈরি করতে পারেন:
@SpringBootApplication
public class SpringBootApplicationExample {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplicationExample.class, args);
}
}
এটি Spring Boot অ্যাপ্লিকেশন চালু করার জন্য main() মেথড।
সারাংশ
Spring প্রজেক্ট তৈরি করতে Maven বা Gradle ব্যবহার করা যেতে পারে, যেখানে Maven বা Gradle দিয়ে Spring Boot এবং অন্যান্য প্রয়োজনীয় ডিপেনডেন্সি কনফিগার করতে হয়। Spring Initializr ব্যবহার করে খুব সহজেই Maven বা Gradle ভিত্তিক Spring প্রজেক্ট তৈরি করা যায়। একবার প্রজেক্ট তৈরি হয়ে গেলে, আপনি Spring Boot অ্যাপ্লিকেশন চালু করতে পারেন এবং প্রয়োজনীয় ফিচার যেমন Spring Web, Spring Data JPA, Thymeleaf ইত্যাদি ব্যবহার করতে পারেন।
Spring Framework এবং Spring Boot দুইটি অত্যন্ত জনপ্রিয় Java ফ্রেমওয়ার্ক, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। Spring Framework একটি পূর্ণাঙ্গ ফ্রেমওয়ার্ক যা একটি শক্তিশালী এবং কাস্টমাইজেবল প্ল্যাটফর্ম প্রদান করে, যেখানে Spring Boot এটি একটি কনভেনিয়েন্স ফ্রেমওয়ার্ক যা Spring অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও দ্রুত এবং সহজ করে তোলে। এখানে আমরা Spring Framework এবং Spring Boot এর মধ্যে পার্থক্য বিস্তারিতভাবে আলোচনা করব।
১. Purpose (উদ্দেশ্য)
- Spring Framework: Spring Framework মূলত একটি Comprehensive Framework যা বড় আকারের অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য শক্তিশালী এবং কাস্টমাইজেবল সমাধান প্রদান করে। এটি dependency injection (DI), aspect-oriented programming (AOP), data access, transaction management, model-view-controller (MVC) এবং আরও অনেক ফিচার প্রদান করে।
- Spring Boot: Spring Boot মূলত Auto-Configuration এবং Standalone Application তৈরি করার জন্য Spring Framework এর উপরে একটি convention-over-configuration ভিত্তিক ফ্রেমওয়ার্ক। এটি Spring অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও দ্রুত এবং সহজ করে তোলে এবং অপ্রয়োজনীয় কনফিগারেশন নির্ধারণের ঝামেলা দূর করে।
২. Configuration (কনফিগারেশন)
- Spring Framework: Spring Framework এ অ্যাপ্লিকেশন কনফিগারেশনটি XML Configuration অথবা Java-based Configuration (using
@Configurationannotation) মাধ্যমে করতে হয়। যদিও Spring 3.0 থেকে Java Configuration সমর্থিত হলেও, এখনও অনেক অ্যাপ্লিকেশনে XML কনফিগারেশন ব্যবহৃত হয়। - Spring Boot: Spring Boot এ অধিকাংশ কনফিগারেশন auto-configuration এর মাধ্যমে সম্পন্ন হয়। Spring Boot starter dependencies এবং application.properties বা application.yml ফাইলের মাধ্যমে কনফিগারেশন খুব সহজে করা যায়। এতে একটি Spring অ্যাপ্লিকেশন শুরুর জন্য খুব কম কনফিগারেশন প্রয়োজন।
৩. Project Setup (প্রজেক্ট সেটআপ)
- Spring Framework: Spring Framework ব্যবহার করতে গেলে একটি মৌলিক অ্যাপ্লিকেশন সেটআপে অনেক কনফিগারেশন, লাইব্রেরি, ডিপেনডেন্সি ম্যানেজমেন্ট এবং সার্ভার কনফিগারেশন প্রয়োজন হয়। প্রজেক্ট শুরু করতে কিছুটা বেশি সময় লাগতে পারে।
- Spring Boot: Spring Boot এর মাধ্যমে Spring Initializr ব্যবহার করে প্রজেক্ট সেটআপ খুব সহজ হয়ে গেছে। এটি standalone applications তৈরি করতে সহায়তা করে এবং একাধিক starter templates সরবরাহ করে। Spring Boot প্রজেক্ট শুরু করার জন্য less configuration এবং auto-configuration সরবরাহ করে।
৪. Application Type (অ্যাপ্লিকেশন টাইপ)
- Spring Framework: Spring Framework বিভিন্ন ধরণের অ্যাপ্লিকেশন যেমন web applications, enterprise applications, এবং microservices তৈরি করতে ব্যবহৃত হয়। তবে, Spring Framework ব্যবহার করে অ্যাপ্লিকেশন তৈরি করতে প্রয়োজনীয় কনফিগারেশন এবং সেটআপ বেশি হতে পারে।
- Spring Boot: Spring Boot বিশেষভাবে standalone applications (টমক্যাট বা জেটি সার্ভারের সাথে) তৈরি করতে ব্যবহৃত হয়। Spring Boot এ অ্যাপ্লিকেশনগুলো সাধারণত embedded server (যেমন Tomcat, Jetty, Undertow) ব্যবহার করে এবং web application বা microservices তৈরির জন্য এটি অত্যন্ত উপযোগী।
৫. Dependency Management (ডিপেনডেন্সি ম্যানেজমেন্ট)
- Spring Framework: Spring Framework এ ডিপেনডেন্সি ম্যানেজমেন্টের জন্য আপনাকে নিজে অনেক ডিপেনডেন্সি ম্যানেজ করতে হয় এবং সেগুলো অ্যাড করতে হয়। এতে কনফিগারেশন বেশি এবং ডিপেনডেন্সি রেজলিউশন কিছুটা কমফ্লিকেটেড হতে পারে।
- Spring Boot: Spring Boot স্বয়ংক্রিয়ভাবে starter dependencies ব্যবহার করে। উদাহরণস্বরূপ, Spring Boot এর spring-boot-starter-web, spring-boot-starter-data-jpa, spring-boot-starter-security ইত্যাদি স্টার্টার ডিপেনডেন্সি অন্তর্ভুক্ত করে, যার মাধ্যমে খুব সহজে ডিপেনডেন্সি যুক্ত করা সম্ভব।
৬. Embedded Server (এম্বেডেড সার্ভার)
- Spring Framework: Spring Framework এর মাধ্যমে অ্যাপ্লিকেশন চালাতে সাধারণত আপনি একটি পৃথক web server (যেমন Apache Tomcat, JBoss) সেটআপ করতে হবে।
- Spring Boot: Spring Boot-এ embedded servers রয়েছে, যেমন Tomcat, Jetty, বা Undertow। এর মাধ্যমে আপনাকে আলাদা কোনো web server সেটআপ করতে হয় না, এবং Spring Boot অ্যাপ্লিকেশন সরাসরি চালানো যায়।
৭. Microservices Support (মাইক্রোসার্ভিস সাপোর্ট)
- Spring Framework: Spring Framework মাইক্রোসার্ভিস আর্কিটেকচার তৈরি করতে সহায়তা করে, তবে এতে আরও বেশি কনফিগারেশন এবং ম্যানুয়াল সেটআপ প্রয়োজন হয়।
- Spring Boot: Spring Boot মাইক্রোসার্ভিস আর্কিটেকচার তৈরি করতে সহজ এবং কার্যকরী একটি প্ল্যাটফর্ম। Spring Boot-এ ডেভেলপমেন্ট প্রক্রিয়া দ্রুত করা যায় এবং মাইক্রোসার্ভিসের জন্য এটি easy integration সরবরাহ করে। Spring Boot মাইক্রোসার্ভিস আর্কিটেকচারের জন্য সব ধরনের সহায়তা প্রদান করে, যেমন Spring Cloud।
৮. Learning Curve (লার্নিং কার্ভ)
- Spring Framework: Spring Framework একটি বিশাল ফ্রেমওয়ার্ক এবং তার পুরো ক্ষমতা বুঝতে ও শিখতে কিছুটা সময় এবং প্রয়াস লাগে। এতে অনেক বৈশিষ্ট্য এবং কনফিগারেশন পদ্ধতি রয়েছে, যার ফলে নতুনদের জন্য শিখতে কিছুটা কঠিন হতে পারে।
- Spring Boot: Spring Boot সহজ এবং দ্রুত শিখতে পারে, কারণ এতে অনেক কম কনফিগারেশন প্রয়োজন এবং starter projects এর মাধ্যমে সরাসরি কাজ শুরু করা যায়।
৯. Production Ready Features (প্রোডাকশন রেডি ফিচার)
- Spring Framework: Spring Framework-এ প্রোডাকশন রেডি ফিচারগুলো তৈরি করতে বেশ কিছু কনফিগারেশন এবং অতিরিক্ত কোডিং প্রয়োজন।
- Spring Boot: Spring Boot প্রোডাকশন রেডি ফিচার যেমন Actuator (Monitoring, Metrics, Health Checks) এবং Auto-Configuration সরবরাহ করে, যা প্রোডাকশন পরিবেশে দ্রুত ডিপ্লয়মেন্টে সহায়তা করে।
সারাংশ
Spring Framework এবং Spring Boot এর মধ্যে প্রধান পার্থক্য হলো Spring Boot একটি কনভেনিয়েন্স ফ্রেমওয়ার্ক যা Spring Framework এর উপরে তৈরি হয়েছে এবং এর মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্ট দ্রুত, সহজ এবং কম কনফিগারেশনে করা যায়। Spring Boot স্বয়ংক্রিয় কনফিগারেশন, এম্বেডেড সার্ভার, স্টার্টার ডিপেনডেন্সি এবং প্রোডাকশন রেডি ফিচার সরবরাহ করে, যার মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্ট সহজ হয়ে যায়। Spring Framework বেশি কাস্টমাইজযোগ্য এবং শক্তিশালী হলেও এতে বেশি কনফিগারেশন এবং জটিলতা থাকতে পারে। Spring Boot আধুনিক অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য সবচেয়ে জনপ্রিয় এবং সহজ উপায়।
স্প্রিং ফ্রেমওয়ার্ক একটি শক্তিশালী Java ভিত্তিক ফ্রেমওয়ার্ক যা অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য অত্যন্ত জনপ্রিয়। স্প্রিং প্রজেক্ট তৈরি করার জন্য আপনি Eclipse অথবা IntelliJ IDEA ব্যবহার করতে পারেন। এখানে আমরা দেখব কীভাবে এই দুটি IDE তে স্প্রিং প্রজেক্ট সেটআপ করা যায়।
Eclipse তে Spring প্রজেক্ট সেটআপ
Eclipse হল একটি জনপ্রিয় IDE যা Java ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। স্প্রিং প্রজেক্ট সেটআপ করতে Spring Tools 4 প্লাগইন ইনস্টল করা প্রয়োজন।
১. Eclipse IDE ইনস্টল করা
প্রথমে Eclipse IDE ইনস্টল করতে হবে। Eclipse IDE ডাউনলোড করার জন্য Eclipse Downloads পেজে গিয়ে Eclipse IDE ডাউনলোড করুন।
২. Spring Tools 4 ইনস্টল করা
স্প্রিং প্রজেক্ট তৈরি করার জন্য, আপনাকে Spring Tools 4 প্লাগইন ইনস্টল করতে হবে।
- Help > Eclipse Marketplace তে যান।
- Spring Tools 4 সার্চ করুন এবং ইনস্টল করুন।
- ইনস্টল হওয়ার পরে, Eclipse রিস্টার্ট করুন।
৩. Spring Starter Project তৈরি করা
- File > New > Spring Starter Project নির্বাচন করুন।
- প্রজেক্টের নাম, গ্রুপ, আর্টিফ্যাক্ট, এবং ডিপেনডেন্সি নির্বাচন করুন।
- Group:
com.example - Artifact:
springdemo - Dependencies: Spring Web, Spring Boot DevTools, Spring Data JPA, Thymeleaf ইত্যাদি।
- Group:
- Finish ক্লিক করে প্রজেক্ট তৈরি করুন।
৪. Spring Boot Application ক্লাস তৈরি করা
এখন, আপনার স্প্রিং প্রজেক্টে Spring Boot Application ক্লাস তৈরি করুন।
package com.example.springdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDemoApplication.class, args);
}
}
এখানে, @SpringBootApplication অ্যানোটেশনটি স্প্রিং বুটের জন্য প্রয়োজনীয় কনফিগারেশন সন্নিবেশিত করে।
৫. প্রজেক্ট রান করা
আপনি Run > Run বা Ctrl + F11 চাপলে স্প্রিং বুট অ্যাপ্লিকেশন রান হবে। আপনি ব্রাউজারে গিয়ে http://localhost:8080 এ অ্যাপ্লিকেশন চেক করতে পারবেন।
IntelliJ IDEA তে Spring প্রজেক্ট সেটআপ
IntelliJ IDEA একটি অত্যন্ত শক্তিশালী IDE যা স্প্রিং প্রজেক্ট ডেভেলপমেন্টের জন্য খুবই জনপ্রিয়। IntelliJ IDEA তে স্প্রিং প্রজেক্ট সেটআপের জন্য Spring Initializr ব্যবহৃত হয়।
১. IntelliJ IDEA ইনস্টল করা
প্রথমে, IntelliJ IDEA ডাউনলোড করুন IntelliJ IDEA Download পেজ থেকে। ইনস্টল করার পর, IDE ওপেন করুন।
২. Spring Initializr দিয়ে প্রজেক্ট তৈরি করা
- File > New > Project নির্বাচন করুন।
- Spring Initializr সিলেক্ট করুন এবং Next ক্লিক করুন।
- গ্রুপ, আর্টিফ্যাক্ট এবং প্রজেক্টের নাম উল্লেখ করুন:
- Group:
com.example - Artifact:
springdemo
- Group:
- ডিপেনডেন্সি হিসেবে Spring Web, Spring Boot DevTools, Spring Data JPA, Thymeleaf নির্বাচন করুন।
- Finish ক্লিক করে প্রজেক্ট তৈরি করুন।
৩. Spring Boot Application ক্লাস তৈরি করা
IntelliJ IDEA প্রজেক্ট তৈরি করার পর, একটি SpringBootApplication ক্লাস তৈরি হবে। যদি না থাকে, তাহলে নতুন ক্লাস তৈরি করে নিম্নলিখিত কোড যুক্ত করুন:
package com.example.springdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDemoApplication.class, args);
}
}
এখানে, @SpringBootApplication অ্যানোটেশনটি স্প্রিং বুট কনফিগারেশন সন্নিবেশিত করে এবং SpringApplication.run() মেথডটি অ্যাপ্লিকেশন চালু করে।
৪. প্রজেক্ট রান করা
স্প্রিং বুট অ্যাপ্লিকেশন রান করতে, Run > Run ক্লিক করুন অথবা Shift + F10 প্রেস করুন। তারপর ব্রাউজারে গিয়ে http://localhost:8080 এ অ্যাপ্লিকেশন চেক করুন।
Spring Boot প্রজেক্ট কনফিগারেশন
স্প্রিং বুট প্রজেক্টের জন্য কনফিগারেশন সাধারণত application.properties অথবা application.yml ফাইলে করা হয়। এখানে একটি উদাহরণ দেওয়া হলো:
application.properties:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
এখানে, আমরা MySQL ডেটাবেস কনফিগার করেছি, এবং স্প্রিং বুট অ্যাপ্লিকেশনটি পোর্ট 8080 এ রান করবে।
সারাংশ
Eclipse এবং IntelliJ IDEA উভয় IDE তেই স্প্রিং প্রজেক্ট সহজেই সেটআপ করা যায়। Eclipse এর জন্য Spring Tools 4 প্লাগইন এবং IntelliJ IDEA তে Spring Initializr ব্যবহার করে স্প্রিং বুট প্রজেক্ট তৈরি করা সম্ভব। পরে, স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করে বিভিন্ন কনফিগারেশন এবং ডিপেনডেন্সি যোগ করা হয়, এবং অ্যাপ্লিকেশনটি রান করা যায়।
Spring Framework হল একটি শক্তিশালী এবং বিস্তৃত জাভা ফ্রেমওয়ার্ক যা ডেভেলপারদের অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। এটি Dependency Injection (DI), Aspect-Oriented Programming (AOP), Transaction Management, এবং Spring MVC এর মতো সুবিধা প্রদান করে। Spring ফ্রেমওয়ার্ক ব্যবহার করে, আপনি সহজে এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে পারেন।
এই উদাহরণে, আমরা একটি সহজ Hello World প্রোগ্রাম তৈরি করব যা Spring Core ফিচার ব্যবহার করে একটি বেসিক Spring Bean ইন্সট্যান্স তৈরি করবে এবং সেটি প্রিন্ট করবে।
1. Spring Framework প্রজেক্ট তৈরি করা
Spring Framework ব্যবহার করতে হলে, প্রথমে আপনাকে প্রজেক্টের জন্য Spring Context ডিপেনডেন্সি প্রয়োজন হবে। আমরা এখানে Maven ব্যবহার করে Spring প্রজেক্ট সেটআপ করব।
1.1 Maven ডিপেনডেন্সি
Spring Core ফিচার ব্যবহার করতে নিচের ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করতে হবে:
<dependencies>
<!-- Spring Context for Dependency Injection -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.21</version> <!-- Use the latest version -->
</dependency>
<!-- SLF4J Logger for logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.32</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.32</version>
</dependency>
</dependencies>
এখানে, spring-context Spring Core এর জন্য, যা Dependency Injection (DI) এবং ApplicationContext এর মাধ্যমে Spring Bean তৈরি এবং ব্যবস্থাপনা করতে সাহায্য করে।
2. Hello World Example
এখন আমরা একটি HelloWorld Spring অ্যাপ্লিকেশন তৈরি করব, যেখানে একটি Spring Bean ব্যবহার করা হবে এবং এটি Spring Context এর মাধ্যমে ম্যানেজ করা হবে।
2.1 Spring Bean তৈরি করা
প্রথমে একটি HelloWorldService ক্লাস তৈরি করা হবে, যেটি একটি Spring Bean হবে।
package com.example;
public class HelloWorldService {
private String message;
// Setter for message
public void setMessage(String message) {
this.message = message;
}
// Method to print message
public void printMessage() {
System.out.println("Message: " + message);
}
}
এখানে:
- setMessage() মেথডটি Spring Context দ্বারা message প্রপার্টি সেট করতে ব্যবহৃত হবে।
- printMessage() মেথডটি প্রিন্ট করবে message কন্টেন্ট।
2.2 Spring Configuration Class
Spring ফ্রেমওয়ার্কের মধ্যে, আপনি Spring Beans এবং তাদের কনফিগারেশন নির্ধারণ করার জন্য একটি কনফিগারেশন ক্লাস তৈরি করবেন। এটি Spring IoC (Inversion of Control) কনটেইনার দ্বারা ব্যবস্থাপিত হবে।
package com.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public HelloWorldService helloWorldService() {
HelloWorldService service = new HelloWorldService();
service.setMessage("Hello, Spring World!");
return service;
}
}
এখানে:
- @Configuration: এই অ্যানোটেশনটি Spring কনফিগারেশন ক্লাসকে চিহ্নিত করে।
- @Bean: এই অ্যানোটেশনটি Spring কনটেইনারের মধ্যে একটি Bean তৈরি করে।
helloWorldService()মেথডটি একটি HelloWorldService অবজেক্ট তৈরি করে এবং সেটি Spring কনটেইনারে রেজিস্টার করে।
2.3 Spring Application Class
এখন, একটি Main Application ক্লাস তৈরি করতে হবে যেখানে Spring ApplicationContext লোড হবে এবং HelloWorldService Bean কল করা হবে।
package com.example;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringHelloWorldApp {
public static void main(String[] args) {
// Initialize the Spring container
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
// Get the HelloWorldService bean
HelloWorldService service = context.getBean(HelloWorldService.class);
// Call the method to print message
service.printMessage();
// Close the context
context.close();
}
}
এখানে:
- AnnotationConfigApplicationContext: এটি Spring কনটেইনার লোড করতে ব্যবহৃত হয়। আমরা AppConfig.class পাস করি, যাতে Spring কনটেইনার এই কনফিগারেশন ক্লাসের Bean গুলি লোড করে।
- context.getBean(): এটি Spring Context থেকে
HelloWorldServiceBean রিটার্ন করবে। - context.close(): Spring কনটেইনার বন্ধ করার জন্য এটি ব্যবহৃত হয়।
3. প্রজেক্ট চালানো
এখন আপনার SpringHelloWorldApp ক্লাস রান করলে, Spring AOP এবং Dependency Injection (DI) এর মাধ্যমে HelloWorldService Bean এর মাধ্যমে লগিং কাজ করবে এবং মেসেজটি কনসোলে প্রিন্ট হবে।
3.1 আউটপুট:
Message: Hello, Spring World!
এখানে, HelloWorldService Bean এর মাধ্যমে মেসেজটি প্রিন্ট করা হচ্ছে যা Spring IoC কনটেইনারের মাধ্যমে ইনজেক্ট হয়েছে।
4. সারাংশ
Spring Framework ব্যবহার করে একটি সহজ Hello World প্রোগ্রাম তৈরি করা হয়েছে। এখানে, Spring Dependency Injection (DI) ব্যবহার করা হয়েছে, যেখানে Spring Context একটি HelloWorldService Bean তৈরি এবং ম্যানেজ করেছে। @Configuration এবং @Bean অ্যানোটেশন ব্যবহার করে Spring কনটেইনারে Bean কনফিগারেশন করা হয়েছে এবং AnnotationConfigApplicationContext ব্যবহার করে অ্যাপ্লিকেশন কনটেইনার লোড করা হয়েছে।
এটি Spring Framework এর মূল ধারণাগুলোর একটি সহজ উদাহরণ এবং প্রাথমিক স্তরের Spring অ্যাপ্লিকেশন তৈরির জন্য একটি আদর্শ পদ্ধতি।
Read more